二分法:
1 對象一定是個有序數列
2 根據排序類型不同,需要修改比較值
從名字就可以知道,就是對半分,不斷對半分
假設檢索 5 從 123456
第一次:
min = 0 max = 5 mid = 2
3 > 5 ? 小=> min = 3, max = 5, mid = 4
第二次
min = 3, max = 5, mid = 4
5 == 5 輸出 4
123456 mid =(max+min)/2 min = 0 max = 5
int search_binary(int array[], int count, int val) {
int max = count-1;
int min = 0;
int mid = 0;
while (min <= max) {
mid = (max+min) / 2;
if (array[mid] == val) {
return mid;
}
if (array[mid] > val) {
min = mid + 1;
} else {
max = mid - 1;
}
}
return -1;
}
推薦課程
尹成老師帶你學算法
數據結構核心原理與算法應用