C语言分治法实现二分查找源码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for (i=0;i<20;i++)
{
if(n==a[i])
{printf("%d 在数组的第%d 位",n,i);
return 0;
}
}
if(i>20)
printf("对不起,您查找的数在数组中不存在");
}
int 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);
Fra Baidu bibliotek
return 0;}
if(n>a[middle]) left=middle+1;
else right=middle-1;
}
printf("对不起,您查找的数在数组中不存在");
return 0;
}
误):");
b=getchar();
printf("请输入您要查找的数:");
scanf("%d",&n);
if(b=='0')
{
t1 = clock();
shunxuchazhao(n,a);
t2 = clock();
printf("\n 顺序查找%d 的时间为:%lf",n,t2-t1);
}
else if(b=='1')
分治法实现二分查找
#include <stdio.h>
#include <stdlib.h>
#include<String.h>
#include <time.h>
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,45,65,75,87,91,95,107,137,148,15
8,168,178,353,423,546,641};
char b;
for(i=0;i<20;i++)
printf("%d
",a[i]);
printf("\n 请输入您要查询的方式(0 为顺序查找,1 为二分查找,其他输入错
{
t1 = clock();
erfen(n,0,19,a);
t2 = clock();
printf("\n 二分查找%d 的时间为:%lf",n,t2-t1);
}
else
printf("对不起,您选择的查找方法错误");
}
int shunxuchazhao(int n,int a
[])
{
int i;