方法2:二分查找法
程序员文章站
2022-06-02 12:08:36
...
思路
#include <iostream>
using namespace std;
#define MAXSIZE 7
typedef struct
{
int Element[MAXSIZE];
int Lenth;
}LNode,*List;
int BinarySearch(List list,int k);
int main()
{
LNode list;
list.Element[1]=1;
list.Element[2]=2;
list.Element[3]=3;
list.Element[4]=4;
list.Element[5]=5;
list.Element[6]=6;
list.Lenth=MAXSIZE;
List pt=&list;
while(1)
{
cout<<"输入你想查找的元素"<<endl;
int k;cin>>k;
cout<<"你查找的元素位置在"<<BinarySearch(pt,k)<<endl;
}
return 0;
}
int BinarySearch(List list,int k)
{
int left=1;int right=list->Lenth-1;int mid;
while(left<=right)
{
mid=(left+right)/2;
if(k>list->Element[mid])
{
left=mid+1;
}
else if(k<list->Element[mid])
{
right=mid-1;
}
else if(k=list->Element[mid])
{
return mid;
}
}
return 0;
}
结果
时间复杂度为log2(n)
上一篇: php 禁止页面缓存输出_PHP教程
下一篇: 关于二分查找的几个分类应用