二分法与简单遍历的效率比较

来源:互联网 发布:电气原理图画图软件 编辑:程序博客网 时间:2024/06/05 11:38
//****************二分法与简单遍历法的效率比较 #include <stdio.h>#include <malloc.h>#include <time.h>#define len 100000000int binary_find(int [], int ,int  );int Normal_find(int [], int ,int  );int array[len]={0};int main(){int num;time_t t_start,t_end;for (int i=0;i<len;i++){array[i]=i+1;}printf("查找的元素是:");scanf("%d",&num);//*********************t_start = clock();printf("查找的元素位置在:%d\n",binary_find(array,len,num));t_end = clock();printf("二分法用时%.6f s\n",double(t_end-t_start)/CLOCKS_PER_SEC);//*********************t_start = clock();    printf("查找的元素位置在:%d\n",Normal_find(array,len,num));t_end = clock();    printf("简单遍历用时%.6f s\n",double(t_end-t_start)/CLOCKS_PER_SEC);//********************return 0;}int binary_find(int array[],int length,int value){    if(NULL == array || length == 0)return -1;int start=0;int end=length-1;        while (start<end)    {int middle=start+((end - start) >> 1); //棒棒哒if (value == array[middle]){return middle;}elseif (value > array[middle]){start = middle + 1;}else                end = middle - 1;    }return -1;}int Normal_find(int array[],int length,int value){    for (int i=0;i<length;i++)    {if (value == array[i]){return i;}    }return -1;}

1 0
原创粉丝点击