#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 15
int search();//函数声明
void main()
{
int a[N],i,j,swp,num,mid;
srand((unsigned int)time NULL); //以时间作为种子
for(i=0;i<N;i++)
a[i]=rand()%100+1; //生成随机数组
for(i=0;i<N;i++)
printf("%5d",a[i]); //打印出生成的随机数组
printf("\n");
for(i=0;i<N-1;i++) //用冒泡排序法给生成的随机数排序
for(j=0;j<N-i-1;j++)
{
if(a[j]>a[j+1])
{ swp=a[j];
a[j]=a[j+1];
a[j+1]=swp;
}
}
printf("After sorting:\n"); //输出排序后的结果
for(i=0;i<N;i++) printf("%5d",a[i]);
puts("\nplease input the number that you want to search:"); scanf("%d",&num);
mid=search(num,a); //调用函数}int search(int num,int a[]) //折半查找法{
int low=0,hight=N,mid,jugment=0;
do
{
mid=(low+hight)/2;
if(num<a[mid])
hight=mid;
if(num>a[mid])
low=mid;
if(num==a[mid])
{
printf("%d in the array is a[%d]",num,mid);
jugment=1;
break;
}
}while(hight-low!=1);
if(jugment==0)
printf("no this number!");
return mid;
}
折半查找法
最新推荐文章于 2023-08-27 23:41:30 发布