//*************************************************************// //** 函数名称: // //** 函数功能:折半查找 // //** 作 者:xt // //** 时 间:2013/8/4 // //*************************************************************// #include "stdio.h" #include "stdlib.h" #include "time.h" #define N 10 void main() { int i,j,flag,flag1,a[N],x; int low=0,high=N-1,middle,count=0,temp; srand(time(NULL)); for(i=0;i<N;i++) a[i]=rand()%100; printf("Before Sorting:\n"); for(i=0;i<N;i++) printf("%3d",a[i]); printf("\n"); //需要排序,用冒泡法 for(i=0;i<N;i++) //冒泡法 { flag1=0; for(j=0;j<N-i;j++) { if(a[j]>a[j+1]) { temp=a[j];a[j]=a[j+1];a[j+1]=temp; flag1=1; } } if(!flag1) break; } printf("After Sorting:\n"); for(i=0;i<N;i++) printf("%3d",a[i]); printf("\n"); printf("Input the Key:"); scanf("%d",&x); while(low<high) { count++; middle=(low+high)/2; if(a[middle]==x) { flag=1; break; } else if(x>a[middle]) low=middle; else high=middle; } if(flag) printf("找到了%d,查找的次数为%d",x,count); else printf("未找到%d,查找的次数为%d",x,count); } |
|