产生不同随机数,输入数据用折半查找判断数据是否存在。

    xiaoxiao2021-03-25  163

    随机产生一组互不相同的两位整数,然后通过键盘输入一个整数,利用折半查找法,查找该整数是否存在。

    以为很简单的小程序,产生随机数时遇到了大问题,多次相同的随机数产生,另外还要进行排序,折半查找的前提就是有序数列。

    产生随机数用到goto,暴力解决。可以通过改变n的值来改变猜中的概率。

    #include<iostream> #include<stdlib.h> #include<string.h> #include<time.h>  #include<algorithm>  #define n 20 using namespace std; int a[n]; void find(int a[],int m) { int i,j,mid,high=n,low=0; sort(a,a+n);    //c++快排函数  while(low<=high)  //折半查找  { mid=(high+low)/2; if(a[mid]>m)           {               high=mid-1;           }           else if(a[mid]<m)           {               low=mid+1;           }           else            {              cout<<"Amazing!该数存在!"<<endl;  //若a【mid】正好等于num,输出。             return ;         }   } if(low>high)  //遍历数组后,没有找到  cout<<"Sorry....该数不存在。"<<endl; } int main() { int num,i,j,k,x; cout<<"请输入一个数字"<<endl;  while(cin>>num) { memset(a,0,sizeof(a));  //清空数组  srand((unsigned)time(NULL));   //产生不同随机数函数  for(i=0;i<n;i++) { q:    x=rand()

    转载请注明原文地址: https://ju.6miu.com/read-4708.html

    最新回复(0)