快排和歸併排序講解

2021-08-19 20:57:09 字數 711 閱讀 2680

快速排序

歸併排序

找陣列的最後乙個數字,假設為number,然後number為標準,調整陣列:陣列左邊是小於number的數,中間是等於number的數,右邊是大於number的數,然後對小於number的部分繼續進行上述操作,對大於number的部分繼續進行上述操作。這是普通的快速排序,和資料的狀態有關,最好的情況的時間複雜度是o(n*log^n)。最好情況:我們假設上述藍字為操作一,當進行完操作一後,等於number的數正好在陣列的最中間。最壞的情況的時間複雜度o(n^2。最壞情況:進行完操作一後等於number的數在陣列的最左邊或最右邊。

由於這種弊端的存在,所有又發明了隨機快排,隨機快排和普通快排的唯一差別就是在選number的時候,普通快排是選擇的陣列的最後乙個數,而隨機快排是選擇陣列隨機乙個位置上的數。

快排 歸併排序

二 歸併排序 遞迴 分治的思維 分治 確定分界點 我們下面以中間值q l r 1 為分界點,理論上任何點作為分界點都可 調整區間 x 的在左邊,x的在右邊 兩個區間 遞迴 遞迴處理左右兩段 原題鏈結 題目描述 給定你乙個長度為n的整數數列。請你使用快速排序對這個數列按照從小到大進行排序。並將排好序的...

單鏈表排序 快排和歸併排序

題目描述 給定乙個亂序的單鏈表的頭節點,對該鍊錶中的節點進行排序 要求時間複雜度為o nlgn 空間複雜度為o 1 分析 由於題目要求時間複雜度我o nlgn 因此選擇排序和插入排序可以排除。在排序演算法中,時間複雜度為o nlgn 的主要有 歸併排序 快速排序 堆排序。其中堆排序的空間複雜度為 n...

演算法 歸併排序與快排

歸併排序是另一種不同的排序方法,因為歸併排序使用了遞迴分治的思想,所以理解起來比較容易。其基本思想是,先遞迴劃分子問題,然後合併結果。把待排序列看成由兩個有序的子串行,然後合併兩個子串行,然後把子序列看成由兩個有序序列。倒著來看,其實就是先兩兩合併,然後四四合併。最終形成有序序列。空間複雜度為o n...