Найти бинарное мышление
- Во-первых, начните поиск с середины элементов упорядоченного массива, если этот элемент случается целевой элемент (то есть элемент, который вы хотите найти), процесс поиска заканчивается, в противном случае следующий шаг.
- Если целевой элемент больше или меньше, чем промежуточный элемент, в той половине промежуточной области большей или меньшей, чем поиск элемент массива, затем повторить первый этап операции.
- Если шаг в массиве пуст, то не может найти целевой элемент
реализация кода
- Нерекурсивна
// 非递归算法
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