快速排序和二分尋找

來源:互聯網
上載者:User

標籤:lse   i++   else   成長   開發人員   code   遞增   floor   社區   

  快排和二分尋找都基於一種叫做「分治」的演算法思想,通過對資料進行分類處理,不斷降低數量級,實現O(logN)(對數層級,比O(n)這種線性複雜度更低的一種,快排核心是二分法的O(logN),實際複雜度為O(N*logN))的複雜度。

  

快速排序

快排大概的流程是:

  1. 隨機播放數組中的一個數 A,以這個數為基準
  2. 其他數字跟這個數進行比較,比這個數小的放在其左邊,大的放到其右邊
  3. 經過一次迴圈之後,A 左邊為小於 A 的,右邊為大於 A 的
  4. 這時候將左邊和右邊的數再遞迴上面的過程
const Arr = [85, 24, 63, 45, 17, 31, 96, 50];function quickSort(arr) {    if (arr.length <= 1) {        return arr;    }    let pivotIndex = Math.floor(arr.length / 2);    let pivot = arr.splice(pivotIndex, 1)[0];    let left = [];    let right = [];    for (let i = 0; i < arr.length; i++) {        if (arr[i] < pivot) {            left.push(arr[i]);        } else {            right.push(arr[i]);        }    }    // 遞迴    return quickSort(left).concat([pivot], quickSort(right));}console.log(quickSort(Arr));...https://juejin.im掘金 — 一個協助開發人員成長的社區
二分尋找

 

二分尋找法主要是解決「在一堆有序的數中找出指定的數」這類問題,不管這些數是一維數組還是多維陣列,只要有序,就可以用二分尋找來最佳化。

二分尋找是一種「分治」思想的演算法,大概流程如下:

  1. 數組中排在中間的數字 A,與要找的數字比較大小
  2. 因為數組是有序的,所以: a) A 較大則說明要尋找的數字應該從前半部分尋找 b) A 較小則說明應該從尋找數位後半部分尋找
  3. 這樣不斷尋找縮小數量級(扔掉一半資料),直到找完數組為止

題目:在一個二維數組中,每一行都按照從左至右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

function Find(target, array) {    let i = 0;    let j = array[i].length - 1;    while (i < array.length && j >= 0) {        if (array[i][j] < target) {            i++;        } else if (array[i][j] > target) {            j--;        } else {            return true;        }    }    return false;}//測試案例console.log(Find(10, [    [1, 2, 3, 4],     [5, 9, 10, 11],     [13, 20, 21, 23]    ]));...https://juejin.im掘金 — 一個協助開發人員成長的社區

 

快速排序和二分尋找

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.