您好,登錄后才能下訂單哦!
Python中怎么實現歸并排序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
歸并排序
歸并排序是分治策略在排序中的應用
歸并排序本質上是遞歸算法,思路是將數據表持續分裂成兩半,對兩半部分分別進行歸并排序
遞歸的基本結束條件:數據表僅剩一個數據項(此時整個數據表都已經排序好了)
縮小規模:將數據表分裂成相等的兩半,這樣規模就減半了,并朝著基本結束條件挺進
調用自身:將兩半部分分別調用自身進行歸并排序,然后分別將排好序的兩半部分進行合并,得到排序好的數據表
歸并排序的具體步驟(兩個部分):
先將數據表不停的二分,分到最后只有一個數據項,不能再分了
開始進行合并,合并的時候進行排序
代碼思路
利用遞歸調用不停的拆分數據表
遞歸結束后,左右兩部分數據都已經排序好了
針對左右兩部分進行逐個比對,小的提取出來放到結果列表中
拉鏈式交錯將左右部分從小到達合并到結果列表中
最后,如果有一方清空了,則另一部分剩下的都是大數據項,且有序。直接接到結果列表后面
拆分的方法:數組切片
合并的方法:左右兩部分數組逐個元素比對(循環條件,左右部分都還有元素)
算法分析
歸并排序主要有兩個過程:分裂和歸并
分裂:O(logn) 參考二分查找
歸并:O(n) 所有元素都會被比對放置一次
歸并排序的時間復雜度:O(nlogn)
從時間復雜度來看,歸并排序的效率很好。但是要注意,在空間性能上,歸并排序需要額外一倍的存儲空間用于合并過程,這是一個面都大數據時的缺點
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。