大学生c语言问题问答

利用一维数组存放键盘输入 10个有序(升序或降序)整数,用二分查找方法在该组数据中查找到某关键字的K值(该值从键盘输入)。若查找到输出次此数K在数组的位置;否则输出“未查到次数”

用所学的高级程序设计语言完成下列二分查找算法验证。


#include <iostream>
using namespace std;
int main(void)
{
 int a[10], i, n, flag = 0;
 cout << "输入10个整数:" << endl;
 for (i = 0; i < 10; i++)
  cin >> a[i];
 cout << "输入要查找的数:";
 cin >> n;
 for (i = 0; i < 10; i++)
  if (a[i] == n)
  {
   cout << "该数在数组中的下标是:" << i << endl;
   flag = 1;
   break;
  }
  if (!flag)
   cout << "无此数" << endl;
  return 0;
}
#include <iostream>
using namespace std;
//二分法查找(要求数组以升序排列)
int binSearch(int x, int a[], int n)
{
    int low, high, mid;
    low = 0;
    high = n-1;
    while(low <= high)
    {
        mid = (low + high) / 2;
        if(x < a[mid])
            high = mid - 1;
        else if(x > a[mid])
            low = mid + 1;
        else
            return mid;
    }
    return -1;
}
int main()
{
    int i,k,pos;
    int a[10];
    cout << "请输入要查找的数:";
    cin >> k;
    cout << "请输入10个整数:";
    for(i=0;i<10;i++)
        cin >> a[i];
    pos = binSearch(k,a,10);
    if(pos < 0)
        cout << "未找到此数";
    else
        cout << pos;
    return 0;
}