20200617-01 二分檢索算法

二分法:
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;
}

推薦課程

尹成老師帶你學算法


數據結構核心原理與算法應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章