快速排序的四種優化方式

2021-10-04 00:11:30 字數 890 閱讀 7655

本文只講述概念。

選用基準值(不在四種優化方式中)

選用基準值有三種方式,選用的基準值較好,快速排序的效能也會較好。

1. 當資料量到達一定大小是,選擇使用插入排序或者堆排序

插入排序

當遞迴之後序列到達某一大小時,相對每個遞迴陣列中的資料元素較少(一般<=16時),在使用遞迴顯然會增加遞迴的深度,所以可以選用直接插入排序,降低遞迴深度,提高運算效率。

堆排序當遞迴進行了較深的深度之後,但是每個遞迴陣列中的元素還是較多,這是可以採用堆排序,從而降低遞迴深度,提排序效能。

2. 使用尾遞迴的方式進行記憶體優化

尾遞迴:簡單理解就是,本次遞迴呼叫不會對主調函式中的任何變數資料產生影響。尾遞迴就是在主調函式的堆疊空間上重新使用該塊空間,進行遞迴呼叫。

可以將快速排序的遞迴呼叫改為尾遞迴的方式,提高效率。

3. 聚集元素

在每次排序排完之後,可以將與基準值相同的元素放在基準值的左右兩邊,這樣就可以是下次排序直接從這些基準值的左邊和右邊進行排序即可。

第一趟:[7] [2] [3] [1] [7] [4] [7] [9] [7] [8]

可以將其更改為:[4] [2] [3] [1] [7] [7] [7] [7] [9] [8]

第二趟就可以左邊直接從1開始,右邊直接從9開始,這樣大大降低了重複元素在快排中消耗時間的額外開銷。

4. 多執行緒排序

多執行緒排序需要使用到執行緒函式《pthred》,通過建立執行緒,給每個執行緒分配資料,然後每個執行緒內部進行排序,最後進行整合的方式達到排序效果。

首先將大資料分成若干份,分配給每個執行緒。

將每個執行緒的內部資料進行快速排序,使每個執行緒內部有序。

然後在進行將這多個執行緒內部的資料進行合併,可以使用歸併排序合併資料的方式。

Hive 四種排序方式

hive中4種排序的區別 共有四種排序 order by,sort by distribute by,cluster by order by 全域性排序 對輸入的資料做排序,故此只有乙個reducer 多個reducer無法保證全域性有序 只有乙個reducer,會導致當輸入規模較大時,需要較長的計...

LlistView的四種優化的方式

llistview的四種優化的方式 第一種方式 將listview元件的高度設定為定值,減少getview的呼叫次數 第二種方式 使用convertview布局復用,減少getview 時通過infalter載入布局的次數,減少記憶體開銷,提高效能 第三種方式 使用viewholder提高在容器中尋...

Web分頁優化的四種方式

背景 在大資料量的情況下,原本很簡單的分頁如果沒有處理好,你會發現分頁的請求會消耗你大量的資料庫時間。如果你遇到了這個問題,文章給了你幾個很好的解決的方案。當然,初學者若能看完這篇文章,那麼它會指導你寫出更具有擴充套件性的分頁 思路 1 全部快取查詢結果。把查詢結果全部快取起來,並定時更新 例如檔案...