xt5-8.cpp
上传用户:liubin
上传日期:2022-06-13
资源大小:85k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. { const int n=7;
  5.   int i,number,top,bott,mid,loca,a[n];
  6.   bool flag=true,sign;
  7.   char c;
  8.   cout<<"enter data:"<<endl;;
  9.   cin>>a[0];
  10.   i=1;
  11.   while(i<n)
  12.    {cin>>a[i];
  13.     if (a[i]>=a[i-1])
  14.       i++;
  15.     else
  16.       cout<<"enter this data again:";
  17.    }
  18.   cout<<endl;
  19.   for (i=0;i<n;i++)
  20.     cout<<a[i]<<" ";
  21.   cout<<endl;
  22.   while(flag)
  23.     {cout<<"input number to look for:";
  24.      cin>>number;
  25.      sign=false;
  26.      top=0;            //top是查找区间的起始位置
  27.      bott=n-1;         //bott是查找区间的最末位置
  28.      if ((number<a[0])||(number>a[n-1]))  //要查的数不在查找区间内
  29.        loca=-1;        // 表示找不到
  30.      while ((!sign) && (top<=bott))
  31.        {mid=(bott+top)/2;
  32.         if (number==a[mid])
  33.          {loca=mid;
  34.           cout<<"Find "<<number<<", its position is "<<loca+1<<endl;
  35.   sign=true;
  36.          }
  37.         else if (number<a[mid])
  38.          bott=mid-1;
  39.         else
  40.         top=mid+1;
  41.        }
  42.      if(!sign||loca==-1)
  43.        cout<<number<<" has not found."<<endl;;
  44.      cout<<"continu or not(Y/N)?";
  45.      cin>>c;
  46.      if (c=='N'||c=='n')
  47.    flag=false;
  48.     }
  49.    return 0;
  50.  }