用C++语言编写折半查找算法的程序

有15个数按由大到小书序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不再数组中,则打印出“无此数”。

#include<iostream>
#include<cstdlib>
using namespace std;

int binary_search(int arr[], int len, int val){
int low = 0, high = len - 1, mid = 0;
while (low <= high){
mid = (low + high) / 2;
if (val == arr[mid])
return mid;
if (val < arr[mid])
low = mid + 1;
else
high = mid - 1;
}

return -1;//查找失败
}

void prtArr(int arr[], int len){
for (int i = 0; i < len; i++)
cout << arr[i] << " ";
cout << endl;
}

int main(){
unsigned int ARRLEN = 0;
int val = 0;
int arr[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
ARRLEN = sizeof(arr) / sizeof(unsigned int);
prtArr(arr, ARRLEN);
cout << "输入要查找的数:"; cin >> val;
int ret = binary_search(arr, ARRLEN, val);
if (ret == -1)
cout << "未找到该数" << endl;
else
cout << "该数为数组的第" << ret << "个元素" << endl;

system("pause");
return 0;
}

执行结果:

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答