#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++运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)