Python 常用排序演算法 二

2022-05-05 04:33:07 字數 977 閱讀 8263

\n佇列實現層次遍歷:', tree.level_queue(tree.root))

我明明寫了七種print 列印出來的結果,不知道為什麼在我儲存後我自己只看到4種,如有大神知道如何解決,請告知。謝謝

桶排序

桶排序是一種計數排序方法,用標記過號碼的桶,去裝待排序陣列中的資料,陣列元素的值對應著桶的編號,最後按桶的標號取出。

具體的方式是,獲取待排序陣列的最大值,以這個最大值建立陣列,並將所有元素置為0,遍歷待排序陣列,如果元素的值和桶的編號相等,則桶的值自動加一。遍歷完畢後,按照桶的編號倒序輸入。

上面的例子只可以排列正數,如需要排列負數需要一些修改,請自行實驗。這種計數排序的方法並不是用於數序很大的情況,而且資料越緊湊排序效果越好。當然這樣的演算法還有可以提高的地方,那就是除了找到待排序陣列的最大值以外,還可以找到它的最小值,以縮短申請的空間。

但是提高的效果有限。這樣的演算法對環境要求很高,但是如果滿足這樣的環境,它的排序效果,非常高效

當給定的待排序陣列沒有重複資料,而且資料量非常大,即屬於桶排序情況的一種極端特殊的情況,使用桶排序的話,我們需要很大的空間消耗,並且桶中的計數,對於結果意義不大。

我們可以將其改造和優化,優化的部分就是如果減少空間的消耗,而不關心桶的計數——數量只有0或者1,而不是》1。0或者1的特點,給了我們啟發——我們可以使用計算機的位進行儲存。這種方法就是位圖排序。

位圖排序:

在桶排序的大思路下,不在使用桶記錄資料,而是使用bit位。如果申請乙個int的二維陣列,每個位置上只放1和0,那麼太浪費空間了——在32位的作業系統上,乙個int完全可以儲存32位的標記,演算法的核心就是如何找到這個位置。為了更好的使用點陣圖的方式,這裡我採用位運算進行編寫,對應的除和餘可以達到同樣的操作,但是效能很低

python 常用排序演算法

常用的排序演算法 氣泡排序,插入排序,歸併排序,快速排序 基數排序 堆排序,直接選擇排序。常用的查詢演算法 順序查詢,二分查詢,雜湊表查詢和二叉樹查詢 其中我們應該重點掌握二分查詢 歸併排序和快速排序,保證能隨時正確 完整地寫出它們的 同時對其他的查詢和排序必須能準確說出它們的特點 對其平均時間複雜...

幾種常用的排序演算法(二) python實現

5.折半插入排序,時間複雜度o n logn 演算法穩定。思路 假設將新元素,插入已經排好序的陣列當中,尋找插入位置的時候,採用了二分查詢,折半插入排序也叫二分插入排序。為陣列排序時,也是將第乙個元素作為已經排好序的陣列,迴圈陣列 若元素 arr i 小於 arr i 1 則為要插入的元素。利用二分...

python排序演算法 二 氣泡排序演算法

實現方法二 實現方法三 測試與對比 氣泡排序複雜度分析 對順序表 data 作交換排序 氣泡排序初級版 這段 嚴格意義上說,不算是標準的氣泡排序演算法,因為它不滿足 兩兩比較 相鄰記錄 的氣泡排序思想,它更應該是最最簡單的交換排序而已。它的思路就是讓 每乙個關鍵字,都和它後面的每乙個關鍵字比較,如果...