1. 程式人生 > 實用技巧 >JS資料結構與演算法 - 查詢(順序、二分)

JS資料結構與演算法 - 查詢(順序、二分)

時間複雜度

順序查詢(O(n)

字面意思,程式碼略

⭐二分查詢(O(nlogn)

這個演算法要求被搜尋的資料結構已排序。以下是該演算法遵循的步驟。

(1) 選擇陣列的中間值。

(2) 如果選中值是待搜尋值,那麼演算法執行完畢(值找到了)。

(3) 如果待搜尋值比選中值要小,則返回步驟1並在選中值左邊的子陣列中尋找。

(4) 如果待搜尋值比選中值要大,則返回步驟1並在選種值右邊的子陣列中尋找。

function Search() {
    this.binarySearch = function (item) {
        //this.quickSort();  //排序程式碼
        var low = 0,
            high = array.length - 1,
            mid, element;
        while (low <= high) {
            mid = Math.floor((low + high) / 2);
            element = array[mid];
            if (element < item) {
                low = mid + 1;
            } else if (element > item) {
                high = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    };
}