快速查找

来源:互联网 发布:w判断矩阵 编辑:程序博客网 时间:2024/04/30 05:08
#include<iostream>using namespace std;int Search(int s[],int x,int n){//二分查找的非递归算法     int mid,low=0;  int high=n-1;     while(low<=high)  {      mid=(low+high)/2;      if(x==s[mid])    return mid;   else    if(x<s[mid])     high=mid-1;    else     low=mid+1;  }     return -1;}int Search1(int s[],int x,int n,int low,int high){//主函数main中调用时Search(s,x,n,0,n-1)    if(low>high)  return -1; else {     int mid=(low+high)/2;     if(x==s[mid])   return mid;  else if(x<s[mid])   return Search1(s,x,n,low,mid-1);  else   return Search1(s,x,n,mid+1,high); }}void main(){     int n,L[20],temp;  int k,k1;//找到元素的下标     cout<<"输入元素的个数:"<<endl;  cin>>n;  for(int i=0;i<n;i++)  {   cout<<"输入第"<<i+1<<"个数字:";      cin>>L[i];  }  cout<<"输入您要查找的元素:";  cin>>temp;  k=Search(L,temp,n-1);  k1=Search1(L,temp,n-1,0,n-1);     cout<<"快速查找(递归算法):";  cout<<L[k]<<"是第"<<k+1<<"个元素!" <<endl;  cout<<"快速查找(非递归):";  cout<<L[k1]<<"是第"<<k1+1<<"个元素!"<<endl;     }


原创粉丝点击