1.随机生成数组
2.数组排序
3.二分查找
4.增删改查
5.集成为一个C语言程序
1.随机生成数组
2.数组排序
3.二分查找
4.增删改查
5.集成为一个C语言程序
# include <stdio.h>
binarySearch(int a[], int n, int key){
int low = 0;
int high = n - 1;
while(low<= high){
int mid = (low + high)/2;
int midVal = a[mid];
if(midVal<key)
low = mid + 1;
else if(midVal>key)
high = mid - 1;
else
return mid;
}
return -1;
}
int main(void)
{
int val, ret;
int a[] = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500};
int n; //存放数组a中元素的个数
int i; //比较的轮数
int j; //每轮比较的次数
int buf; //交换数据时用于存放中间数据
n = sizeof(a) / sizeof(a[0]); /*a[0]是int型, 占4字节, 所以总的字节数除以4等于元素的个数*/
printf("排序前的数组为:\n");
for (i=0; i<n; ++i)
{
printf("%d\x20", a[i]);
}
printf("\n\n");
for (i=0; i<n-1; ++i) //比较n-1轮
{
for (j=0; j<n-1-i; ++j) //每轮比较n-1-i次,
{
if (a[j] > a[j+1])
{
buf = a[j];
a[j] = a[j+1];
a[j+1] = buf;
}
}
}
printf("排序后的数组为:\n\n");
for (i=0; i<n; ++i)
{
printf("%d\x20", a[i]);
}
printf("\n\n请输入要查找的数:");
scanf("%d",&val);
ret = binarySearch(a,20,val);
if(-1 == ret)
printf("查找失败,按任意键退出 \n");
else
printf ("查找成功 \n");
}