《Algorithms Unlocked》是 《算法导论》的合著者之一 Thomas H. Cormen 写的一本算法基础,算是啃CLRS前的开胃菜和辅助教材。如果CLRS的厚度让人望而生畏,这本200多页的小读本刚好合适带你入门。
书中没有涉及编程语言,直接用文字描述算法,我用 JavaScript 对书中的算法进行描述。
二分查找
在排好序的数组中查找目标值x。在p到r区间中,总是取索引为q的中间值与x进行比较,如果array[q]大于x,则比较p到q-1区间,否则比较q+1到r区间,直到array[q]等于x或p>r。
// 利用二分法在已经排好序的数组中查找值xfunction binarySearch(array, x) {
let p = 1;
let r = array.length - 1;
while (p <= r) {
let q = Math.round((p + r) / 2); //四舍五入取整
if (array[q] === x) {
return q;
} else {
if (array[q] > x) {
// 如果q没有减一,遇到找不到x的情况,
// 就会陷入while循环中出不来,因为p会一直等于r
r = q - 1;
} else {
p = q + 1;
}
}
}
return 'NOT-FOUND';}

