//用 clock() 记录查找时间记录查找时间,然后看时间的效率
//随机 10000000 个数据。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
//得到随机数函数
void getRandom(int arr[],int arr_len){
srand((int)time(NULL));//加随机种子
for(int i=0;i<arr_len;i++)
{
arr[i]=rand()%1000; //NUM%100=[0-99] NUM%1001=[0-1000]
}
}
//排序函数
void sort(int arr[],int arr_len)
{
for(int i=0;i<arr_len;i++)
{
for(int j=0;j<arr_len-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
//二分查找函数
int BinarrySearch(int arr[],int arr_len,int find_x)
{
int left=0;
int right=arr_len-1;
int mid;
while(left<=right)
{
mid=(left+right)/2;
if(mid[arr]==find_x)
{
return mid;//查找成功返回下标
}
if(arr[mid]<find_x){//调整左边界
left=mid+1;
}
if(arr[mid]>find_x){//调整右边界
right=mid-1;
}
}
return -1; //否则返回-1 表示不成功
}
}
int main(){
clock_t start,stop;
double duration;
int arr_len;
int arr[10000];
printf("请输入数组大小:");
scanf("%d",&arr_len);
getRandom(arr,arr_len);//随机种子得到 arr_len 个数
sort(arr,arr_len); //简单排序
for(int i=0;i<arr_len;i++){
printf("%4d",arr[i]);
}
printf("\n");
int find_x;
printf("请输入你要查的数:");
scanf("%d",&find_x);
start =clock();
int find_ans=BinarrySearch(arr,arr_len,find_x);
if(find_ans==-1)
printf("查找失败。\n");
else
printf("查找成功,该值位于第%d个\n",find_ans+1);
stop=clock();
duration=((double)(stop-start))/CLK_TCK;
printf("%lf秒",duration);
return 0;
}
09-28
2101
06-10
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交