«Метод JavaScript» бинарное мышление и ищу реализацию коды

Найти бинарное мышление

  • Во-первых, начните поиск с середины элементов упорядоченного массива, если этот элемент случается целевой элемент (то есть элемент, который вы хотите найти), процесс поиска заканчивается, в противном случае следующий шаг.
  • Если целевой элемент больше или меньше, чем промежуточный элемент, в той половине промежуточной области большей или меньшей, чем поиск элемент массива, затем повторить первый этап операции.
  • Если шаг в массиве пуст, то не может найти целевой элемент

реализация кода

  • Нерекурсивна
// 非递归算法
function binary_search(arr, key) {
    let low = 0;
    let high = arr.length - 1;
    while(low <= high){
        let mid = parseInt((high + low) / 2);
        if(key === arr[mid]){
            return  mid;
        }else if(key > arr[mid]){
            low = mid + 1;
        }else if(key < arr[mid]){
            high = mid -1;
        }else{
            return -1;
        }
    }
}
  • рекурсивный
// 递归算法
function binary_search(arr,low, high, key) {
    if (low > high){
        return -1;
    }
    let mid = parseInt((high + low) / 2);
    if(arr[mid] === key){
        return mid;
    }else if (arr[mid] > key){
        high = mid - 1;
        return binary_search(arr, low, high, key);
    }else if (arr[mid] < key){
        low = mid + 1;
        return binary_search(arr, low, high, key);
    }
};

Оригинальная ссылка: https://github.com/qianbin01/frontend_train#sort

рекомендация

отwww.cnblogs.com/yuanchao-blog/p/10991583.html