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

来源:互联网 发布:软件产品质量缺陷等级 编辑:程序博客网 时间:2024/05/02 06:10
#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;

原创粉丝点击