1 //用 clock() 记录查找时间记录查找时间,然后看时间的效率
2 //随机 10000000 个数据。
3 #include
4 #include<string.h>
5 #include
6 #include
7 //得到随机数函数
8 void getRandom(int arr[],int arr_len){
9 srand((int)time(NULL));//加随机种子
10 for(int i=0;i)
11 {
12 arr[i]=rand()%1000; //NUM%100=[0-99] NUM%1001=[0-1000]
13 }
14 }
15
16 //排序函数
17 void sort(int arr[],int arr_len)
18 {
19 for(int i=0;i)
20 {
21 for(int j=0;j1;j++)
22 {
23 if(arr[j]>arr[j+1])
24 {
25 int temp=arr[j];
26 arr[j]=arr[j+1];
27 arr[j+1]=temp;
28 }
29 }
30 }
31 }
32
33 //二分查找函数
34 int BinarrySearch(int arr[],int arr_len,int find_x)
35 {
36 int left=0;
37 int right=arr_len-1;
38 int mid;
39 while(left<=right)
40 {
41 mid=(left+right)/2;
42 if(mid[arr]==find_x)
43 {
44 return mid;//查找成功返回下标
45 }
46 if(arr[mid]//调整左边界
47 left=mid+1;
48 }
49 if(arr[mid]>find_x){//调整右边界
50 right=mid-1;
51 }
52
53 }
54 return -1; //否则返回-1 表示不成功
55 }
56 }
57
58 int main(){
59 clock_t start,stop;
60 double duration;
61 int arr_len;
62 int arr[10000];
63 printf("请输入数组大小:");
64 scanf("%d",&arr_len);
65 getRandom(arr,arr_len);//随机种子得到 arr_len 个数
66 sort(arr,arr_len); //简单排序
67 for(int i=0;i){
68 printf("%4d",arr[i]);
69 }
70 printf("\n");
71 int find_x;
72 printf("请输入你要查的数:");
73 scanf("%d",&find_x);
74 start =clock();
75 int find_ans=BinarrySearch(arr,arr_len,find_x);
76 if(find_ans==-1)
77 printf("查找失败。\n");
78 else
79 printf("查找成功,该值位于第%d个\n",find_ans+1);
80 stop=clock();
81 duration=((double)(stop-start))/CLK_TCK;
82 printf("%lf秒",duration);
83 return 0;
84 }