二分查找算法

 二分查找法是速度较快的搜索算法

二分查找的概念在于,定义一个数组arr,找到当前数组中点middle,如果要查找的值小于当前middle索引对应的值,则将缩小范围,继续求缩小范围的middle值,接着继续比较,不断缩小范围,最后找到该值;

二分查找适合顺序存储,有序的而且数据量很大的数组,而原生的indexOf则适合随机存储并且数据量不大的数组

查到一个有序数组中,某一项的索引


// 有序数组二分查值索引
function binarySearch(arr, value) {
    let start = 0;
    let end = arr.length -1;
    let middle = Math.floor((start + end) /2);

    while (arr[middle] !== value && start <= end) {
        if (value < arr[middle]) {
            end = middle -1;
        } else {
            start = middle + 1;
        }
        middle = Math.floor((start + end) /2); 
    }

    return arr[middle] === value ? middle : -1
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
console.log(binarySearch(arr, 8)); // 7
console.log(binarySearch(arr, 10)); // -1

你可能感兴趣的:(算法,数据结构,算法,c语言)