您的位置:首页 > 其它

二分法查找已排序数列中目标数字的位置

2017-11-02 21:54 239 查看
#include<iostream>
using namespace std;
int search(int list[], int n,int find)
{
int start = 0, end = n - 1;

while (start <= end)
{
int middle = (start + end) / 2;
if (find == list[middle])
return middle;
else if (find > list[middle])
start = middle + 1;
else end = middle - 1;
}

}
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10};
cout << search(a, 10, 6);
cin.get();
return 0;
}
二分法使用最后的确定的数就是二分的中位数,因此最后返回middle,n为奇偶没有关系,因此不必区分奇偶分情况
int middle = (start + end) / 2;
int取的时候舍弃小数位置
使用while (start <= end)作为终止条件,即最后二分法只剩下一个数字,即为查找的数,
在判断左右序列时改变起始于终止位置即可,即middle+or-1;

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐