二分查找

来源:互联网 发布:单片机连接串口扫描 编辑:程序博客网 时间:2024/05/16 14:08
#include <iostream>#define maxn 1000#define NoFound -1using namespace std;const int Record[]={5,16,39,45,51,98,100,202,226,321,368,444,501};struct StaticTable{int Data[maxn];int Length;};StaticTable *CreateTable(){StaticTable *PtrT=(StaticTable*)malloc(sizeof(StaticTable));PtrT->Length=0;return PtrT;}void TablePush(StaticTable *PtrT,int num){PtrT->Data[++(PtrT->Length)]=num;}int BinarySearch(StaticTable *PtrT,int K){int left,right,mid;left=1;right=PtrT->Length;while(left<=right){mid=(left+right)/2;if(K<PtrT->Data[mid]){right=mid-1;}else if(K>PtrT->Data[mid]){left=mid+1;}else{return mid;          //找到后返回下标 }}return NoFound;}int main(){StaticTable *Tbl=CreateTable();for(int i=0;i<sizeof(Record)/sizeof(int);++i){TablePush(Tbl,Record[i]);}int K;cin>>K;cout<<"Tbl->length = "<<Tbl->Length<<endl;cout<<BinarySearch(Tbl,K);return 0; } 

0 0