#include <stdio.h>
#define DEBUG
int searchTimes = 0;
void SelSort(int a[], int N)
{
int m,j,z0,k,temp;
for(m=N;m>0;m--)
{
z0=a[N-m];
k=N-m;
//找到从N-m~N-1的最小的数,下标保存在k里
//让它跟a[N-m]交换
for(j=N-m;j<N;j++)
{
if(z0>a[j]) {
z0 = a[j];
k = j;
}
}
if(k != N-m){temp=a[N-m];a[N-m]=a[k];a[k]=temp;}
}
}
int searchi(int a[], int n, int x)
{
int i;
while(i<n)
{
if(a[i++]==x)
break;
}
if(i>=n)
i=-1;
return i;
}
int BinSearchi(int a[],int left,int right, int x)
{
int mid;
searchTimes++;
#ifdef DEBUG
printf("search %d in [%d %d]\n",x,left+1, right+1);
#endif
mid = (left + right )/2;
if(left>right) return -1;
if(x==a[mid])
return mid;
else if(x< a[mid])
//在左边查找
return BinSearchi(a, left, mid-1, x);
else
//在右边查找
return BinSearchi(a, mid+1,right, x);
}
int main()
{
int a[100], i=0, x=0, pos;
while(i<100)
{ a[i]=(i*i*i-9*i*i-20)%100; i++;}
SelSort(a,100);
printf("请输入整数1~100:");
scanf("%d",&x);
pos = BinSearchi(a, 0, 99, x);
if(pos != -1)
{
printf("找到了!a[%d] = %d\n", pos, x);
}else
{
printf("没找着x\n");
}
printf("总共找了%d次\n", searchTimes);
}
第12周老师上课所讲
最新推荐文章于 2024-07-20 14:45:13 发布