数据结构折半查找算法 折半查找算法及代码?

折半查找算法及代码?#include<iostream>#使用命名空间std模板<class T>int二进制搜索(ta[],const T&x,int n,int left,i

折半查找算法及代码?

#include<iostream>

#使用命名空间std

模板<class T>

int二进制搜索(ta[],const T&x,int n,int left,int right)

{

if(left>=right)

return-1

else

if(a[(left right)/2]==x)

return if(left right)/2

else if(x>=(left right)/2)

returnBinarySearch(a,x,n,(left right)/21,right)

else if(x<(left right)/2)

返回BinarySearch(a,x,n,left,(left right)/2-1)

}

int main()

{

int a[MAXusize

]int i,len,x,P

CIN gt>len for(i=0I<leni)

CIN gt>A[i

]CIN gt>X

P=BinarySearch(a,x,len,0,len-1)

如果(P==-1)

cout<<“数字不存在!“<<endl

else

cout<<P 1<<endl

return 0

}

二进制搜索算法是一种快速搜索算法。当我们在另一个数组中寻找一个数字时,我们通常直接遍历这个数组直到找到这个数字。时间复杂度为O(n)。如果有大量的数据,我们可以使用简单快速的搜索算法二进制搜索算法,也称为半搜索算法。