折半查找

折半查找,又称为二分查找,仅适用于有序的顺序表。时间复杂度为O(logn).。

#include

using namespace std;

int binsearch(int count,int *a,int target)

{

int low=0,high=count-1,mid;

while(low<=high)

{

mid=(low+high)/2;

if(a[mid]==target)

return mid;

else if(a[mid]>target)

high=mid-1;

else

low=mid+1;

}

return -1;

}

int main()

{

 

int count,target;

while(cin>>count>>target)

{

int *a=new int [count+1];

for(int i=0;i

cin>>a[i];

int flag=binsearch(count,a,target);

if(flag==-1)

cout<<"此有序表中不含有该元素"<

else

cout<<"该元素在有序表中的位置为:"<

}

system("pause");

return 0;

 

}

你可能感兴趣的:(数据结构考研代码C++版)