本文为个人学习使用【新手】
代码期号:4.7
代码功能:在数组中高效检索数据
#include <stdio.h>
//模块
void mod0(int a[],int k) {
//选择排序
int max = 0;//随机设一个最大数位置
int i,j,t;
for (i=k-1;i>=0;i--) {
for (j=0;j<=i;j++) {
if (a[j] > a[max]) {
max = j;
}
}
t = a[i];
a[i] = a[max];
a[max] = t;
max = 0;//变量清零
}
}
int mod1(int a[],int k) {
//二分搜索
int x,mid;
int left = 0;
int right = k-1;
int i = 1;
int u = 0;
printf("输入:");
scanf("%d",&x);
while (left <= right) {
mid = (left+right)/2;
printf("信息:%d\t%d\n",i,mid);
if (a[mid] < x) {
left = mid+1;
}
else if (a[mid] > x) {
right = mid-1;
}
else if (a[mid] == x) {
u = 1;
break;
}
mid = 0;
i++;
}
return u;
}
//主体
int main() {
int a[] = {2,12,5,9,3,6,4,7,8,1,11,0,13,15,10,14};//可优化
int k = sizeof(a)/sizeof(a[0]);
int u;
mod0(a,k);//动态数组
u = mod1(a,k);
if (u == 1) {
printf("数组的这个数:存在");
}
else {
printf("数组中的这个数:不存在");
}
return 0;
}