折半算法
折半算法主要用于在有序(从小到大或从大到小)数字列表中,快速查找到想要的数字。在生活中,经常用于猜价格。
例如我们有一组数字:
1, 2, 2, 2, 5, 6, 8, 9
我们需要快速查找到6这个数字的位置,则折半查找的顺序为:
算法:
#include <stdio.h>
#define LEN 8
int a[LEN] = { 1, 2, 2, 2, 5, 6, 8, 9 };
int binarysearch(int number)
{
int mid, start = 0, end = LEN - 1;
while (start <= end) {
mid = (start + end) / 2;
if (a[mid] < number)
start = mid + 1;
else if (a[mid] > number)
end = mid - 1;
else
return mid;
}
return -1;
}
int main(void)
{
printf("%d\n", binarysearch(6));
return 0;
}