查找算法:采用二分法在有序数组 中查找一数,指出数的位置和查找次数。

查找算法:采用二分法在有序数组inta[N]={3,9,11,12,21,23,56,61,89,98};中查找一数,指出数的位置和查找次数。... 查找算法:采用二分法在有序数组 int a[N]={3,9,11,12,21,23,56,61,89,98};中查找一数,指出数的位置和查找次数。 展开
 我来答
百度网友6d34f8e
2014-12-22 · TA获得超过173个赞
知道答主
回答量:46
采纳率:100%
帮助的人:40.2万
展开全部
#include <iostream>
using namespace std;

void BinarySearch(int* list, int len, int key, int* index_t) {
//最低边界 
int low = 0; 
//最高边界 
int high = len - 1; 
while (low <= high) {
index_t[0]++;
//取中间值
int middle = (low + high) / 2;
if (list[middle] == key) {
index_t[1] = middle;
return;

else if (list[middle] > key) {
//下降一半
high = middle - 1; 
}
else {
//上升一半
low = middle + 1; 
}

//没找到 
index_t[1] = -1;


int main() {
const int N = 10;
int list[N]= {3, 9, 11, 12, 21, 23, 56, 61, 89, 98};
int index_t[2] = {0};
BinarySearch(list, N, 12, index_t);

cout << "查找次数为:" << index_t[0] << endl; 
if (index_t[1] != -1)
cout << "已经找到12,索引位置为:" << index_t[1] << endl; 
else
cout << "没找到!" << endl;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式