CC++实现 二分法查找 (数据结构)

CC++实现 二分法查找 (数据结构),第1张

代码实现         1.C语言
#include 
#include 
#include 
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;} //元素 交换,也可定义在函数语句中 

void quicksort(int[], int, int); 
int bisearch(int[], int);

int main() {
	int number[MAX] = {0}; 
	int i, find; 
	srand(time(NULL));//控制随机时间产生数字 (相当于产生随机数) 
	for(i = 0; i < MAX; i++){ 
		number[i] = rand() % 100;
	}
	quicksort(number, 0, MAX-1); 
	printf("\n例如以下元素:\n\n");
	for(i = 0; i < MAX; i++){
		printf("%d ", number[i]);
	}
	printf("\n\n请输入您要查找哪一个数字:"); 
	scanf("%d", &find);
	if((i = bisearch(number, find)) >= 0){
		printf("\n数字位于第 %d 个位置。


\n", i+1); }else{ printf("\n找不到指定数!"); } printf("\n"); return 0; } int bisearch(int number[], int find){ int low, mid, high; low = 0; high = MAX - 1; while(low <= high){ mid = (low+high) / 2; if(number[mid] < find){ low = mid+1; }else if(number[mid] > find){ high = mid - 1; }else return mid; } return -1; } void quicksort(int number[], int left, int right){ int i, j, k, s; if(left < right){ s = number[(left+right)/2]; i = left - 1; j = right + 1; while(1){ while(number[++i] < s) ; // 向右找 while(number[--j] > s) ; // 向左找 if(i >= j){ break; } //交换元素 SWAP(number[i], number[j]); } quicksort(number, left, i-1); // 对左边进行递回 quicksort(number, j+1, right); // 对右边进行递回 } }

        2.C++
#include 
#include
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;} //元素 交换,也可定义在函数语句中
#include
using namespace std;

void quicksort(int[], int, int); 
int bisearch(int[], int);

int main() {
	int number[MAX] = {0}; 
	int i, find; 
	srand(time(NULL));//控制随机时间产生数字 (相当于产生随机数) 
	for(i = 0; i < MAX; i++){ 
		number[i] = rand() % 100;
	}
	quicksort(number, 0, MAX-1);
	cout<<"\n例如以下元素:\n\n";
	for(i = 0; i < MAX; i++){
		cout<>find;
	if((i = bisearch(number, find)) >= 0){
		cout<<"\n数字位于第 "<


\n"; }else{ cout<<"\n找不到指定数!"< find){ high = mid - 1; }else return mid; } return -1; } void quicksort(int number[], int left, int right){ int i, j, k, s; if(left < right){ s = number[(left+right)/2]; i = left - 1; j = right + 1; while(1){ while(number[++i] < s) ; // 向右找 while(number[--j] > s) ; // 向左找 if(i >= j){ break; } //交换元素 SWAP(number[i], number[j]); } quicksort(number, left, i-1); // 对左边进行递回 quicksort(number, j+1, right); // 对右边进行递回 } }

运行结果         1.C语言运行结果

        2.C++运行结果

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存