2.4.4 折半查找(binary search)
定義:給一個整數X 和一個有序的數組A[],求下標 i 使得 A[i] = X ,如果X 不在數據中則返回 -1;
在一個有序數組arr中,尋找一個數target 在 數組 arr 中的位置(索引)。如果未找到返回 -1;
首先找到數組的中心位置midIndex,比較target 數 與中間數arr[midIndex]的大小,若target 比arr[midIndex] 數大表明 該數在目前數組的右半部分,縮小查找范圍lowIndex = midIndex + 1;若target比arr[midIndex] 數小,表明該數在目前數組的左半部分,縮小查找范圍highIndex = midIndex - 1;顯然程序執行的次數是小于數組的長度(每次都是從數組的一半節點開始尋找)所折半查找的時間復雜度是應該O(logN) N 為數組長度。
歐幾里得算法:
gcdV2() 方法是 用迭代寫法與gcd 結果一樣。
定理2.1: 如果m > n,則m mod n < m/2
冪運算:
計算 X^n 的明顯算法是使用N-1的乘法自乘 n ≤ 1 是這種遞歸的基準情形,否則,若n 是偶數,我們有X^n = X^n/2 * X^n/2, 如果 n 是奇數,則X^n = X^(n-1)/2 * X^(n-1)/2 *X;