c语言编程题数组求解,谢谢
用随机函数(自查功能和用法)生成20个数存放到数组中并按降序排序,从键盘输入一个数,完成在数组中的二分查找
给你个参考
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
////随机数+排序+对分搜索
////whoami1978 2018/5/1
int find_2(int *a,int m)
{
int low=0;
int high=9;
int mid;
while(low<=high)
{
mid=(low+high)/2;
mid-=mid%1;
if (m<a[mid])
high=mid-1;
else
if(m>a[mid])
low=mid+1;
else
return mid;
}
return -1;
}
int main(void)
{
int i,j,b;
time_t t;
int a[20];
srand((unsigned) time(&t));
for(i=0; i<20; i++)
a[i]= rand() % 100; //生成10个随机数,0-99
//最经典的冒泡排序
for(i=0;i<19;i++)
for(j=i+1;j<20;j++)
if(a[i]>a[j])
{ b=a[i];
a[i]=a[j];
a[j]=b;
}
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf("
");
scanf("%d",&b);
printf("%d
",find_2(a,b));
return 0;
}