查找方法

来源:互联网 发布:轩辕剑四极进阶数据 编辑:程序博客网 时间:2024/06/14 05:49

奋斗

#include<iostream>using namespace std;int main(){int SX_Find(int array[],int n,int k); //折顺序查找int BinSearch1(int array[],int n,int k);//非递归算法int BinSearch2(int array[], int low, int high, int k);//递归算法int *array,n,k,i1,i2,i3,i;cout<<"数组的长度为:";cin>>n;cout<<"要查找的数为:";cin>>k;array=new int [n];cout<<"输入数组中的数值:";for(i=0;i<n;i++)cin>>array[i];i1=SX_Find(array,n,k);i2=BinSearch1(array,n,k);i3=BinSearch2(array,0,n-1,k);if(i==0)cout<<"该数不存在!"<<endl;elsecout<<"该数在数组中的下标为:"<<i1<<" "<<i2<<" "<<i3<<endl;return 0;}int SX_Find(int array[],int n,int k) {    int i;     array[0]=k;  i=n;     while(array[i]!=k)        i--;     return i;}int BinSearch1(int array[],int n,int k)//非递归算法{    int low=0,high=n-1,mid;    while (low<=high)                       {       mid=(low+high)/2;                   if (k<array[mid])  high=mid-1;       else if (k>array[mid])  low=mid+1;               else return mid;    }    return 0;}int BinSearch2(int array[], int low, int high, int k)//递归算法{    int mid;    if (low>high) return 0;      else {       mid=(low+high)/2;       if (k<array[mid])            return BinSearch2(array, low, mid-1, k);       else  if (k>array[mid])                    return BinSearch2(array, mid+1, high, k);                else return mid;     } }


奋斗