《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';}