资源描述:
《c语言分治法实现二分查找源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、分治法实现二分查找#include #include #include#include int main(){ int shunxuchazhao(int n,int a[20]); int erfen(int n,int left,int right,int a[20]);float t1, t2; int n,i,a[20]={5,17,29,36
2、,45,65,75,87,91,95,107,137,148,158,168,178,353,423,546,641}; char b; for(i=0;i<20;i++) printf("%d ",a[i]); printf("请输入您要查询的方式(0为顺序查找,1为二分查找,其他输入错误):"); b=getchar(); printf("请输入您要查找的数:");
3、 scanf("%d",&n); if(b=='0') { t1 = clock(); shunxuchazhao(n,a);t2 = clock(); printf("顺序查找%d的时间为:%lf",n,t2-t1); } else if(b=='1'){ t1 = clock();
4、 erfen(n,0,19,a); t2 = clock(); printf("二分查找%d的时间为:%lf",n,t2-t1); } else printf("对不起,您选择的查找方法错误"); }int shunxuchazhao(int n,int a[]) {int
5、 i; for (i=0;i<20;i++) { if(n==a[i]){printf("%d在数组的第%d位",n,i); return 0; } } if(i>20) printf("对不起,您查找的数在数组中不存在"); }int
6、 erfen(int n,int left,int right,int a[]) { while(left<=right){ int middle=(left+right)/2; if(n==a[middle]){ printf("%d在数组的第%d位",n,middle); return 0;
7、} if(n>a[middle]) left=middle+1; else right=middle-1; } printf("对不起,您查找的数在数组中不存在"); return 0;}