一、问题描述
写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.。
二、解析·:
1.顺序查找:遍历数据元素
2.二分查找:算法原理:在查找表中不断取中间元素与查找值进行比较,以二分之一的倍率进行表范围的缩小。
三、代码·设计
void mian()/*顺序查找*/
{
for(i=0;i<n;i++)
{
if(T[i]==x)
printf("%d",i);
else
printf("j=0");
}
}
void main()/*二分查找*/
{
int key,low,height;
low=0;
high=n-1;
while(low<high) {
key=(low+high)/2;
if(a[key]==x) {
return key;
} else if(a[key]>x) {
high=key-1;
} else {
low=key+1;
}
}
return -1;
}
四、时间复杂度
顺序查找:O(n)
二分查找:O(log(n))
五、源代码
https://github.com/yttb/hello-world