数据结构 顺序查找和二分查找

来源:互联网 发布:人肉俄罗斯转盘 知乎 编辑:程序博客网 时间:2024/05/17 07:19




/*Sequential Search*/#include<stdio.h>#include<string.h>#include<string>#include<iostream>#include<algorithm>#include<math.h>#include<stack>using namespace std;int Sequential_Search(int a[],int n,int key)//普通顺序查找{    int i;    for(i=0; i<n; i++)    {        if(a[i]==key)return i;    }    return -1;}int Sequential_Search2(int a[],int n,int key){//优化顺序查找,将数组最后一个设为"哨兵",这样就不用判断越界了(也可以将哨兵设在数组开头的位置)    int i=0;    a[n]=key;    while(a[i]!=key)    {        i++;    }    if(i==n)return -1;    else return i;}int binarySearch(int a[],int n,int key)//二分查找{    int low=0,high=n-1;    while(low<=high)    {        int mid=(low+high)/2;        if(a[mid]>key)high=mid-1;        else if(a[mid]<key)low=mid+1;        else return mid;    }    return -1;}int main(){    int a[]={0,5,73,8,9,2,10};    printf("%d\n",Sequential_Search(a,7,73));    sort(a,a+7);    for(int i=0;i<7;i++)printf("%d ",a[i]);    printf("\n");    printf("%d\n",binarySearch(a,7,10));    return 0;}


原创粉丝点击