【分享】Python中最常見的10種排序演算法!

老男孩IT教育機構 發表於 2022-05-06
Python 演算法

  python排序演算法有哪些?python中常見的排序演算法有:插入排序、選擇排序、氣泡排序、快速排序、歸併排序、希爾排序等十種,接下來我們一起來看看詳細的內容介紹。

  第一種:插入排序

  從第二個元素開始和前面的元素進行比較,如果前面的元素比當前元素大,則將前面元素後移,當前元素依次往前,直到找到比它小或等於它的元素插入在其後面,然後選擇第三個元素,重複上述操作,進行插入,依次選擇到最後一個元素,插入後即完成所有排序。

  第二種:選擇排序

  設第一個元素為比較元素,依次和後面的元素比較,比較完所有元素找到最小的元素,將它和第一個元素互換,重複上述操作,我們找出第二小的元素和第二個位置的元素互換,以此類推找出剩餘最小元素將它換到前面,即完成排序。

  第三種:氣泡排序

  氣泡排序也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢浮到數列的頂端。

  第四種:快速排序

  快速排序使用分治法策略來把一個序列分為較小和較大的2個子序列,然後遞迴地排序兩個子序列。

  第五種:歸併排序

  歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法的一個非常典型的應用。

  分治法:

  分割:遞迴地把當前序列平均分割成兩半

  整合:在保持元素順序的同時將上一步得到的子序列整合到一起(歸併)

  第六種:希爾排序

  希爾排序是基於插入排序改進後的演算法,因為當資料移動次數太多時會導致效率低下。所以我們可以先讓陣列整體有序(剛開始移動的幅度大一點,後面再小一點),這樣移動的次數就會降低,進而提高效率。

  第七種:基數排序

  基數排序屬於分配式排序,又稱桶子法或者bin sort,顧名思義,它是透過鍵值的部分資訊,將要排序的元素分配至某些桶中,藉以達到排序的作用,基數排序法是屬於穩定性的排序,其時間複雜度O(nlog(r)m),其中r為所採取的基數,而m為堆數,在某些時候,基數排序法的效率高於其它的穩定性排序法。

  第八種:計數排序

  計數排序的核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。

  第九種:堆排序

  堆排序是指利用堆這種資料結構所設計的一種排序演算法。堆積是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。堆排序可以說是一種利用堆的概念來排序的選擇排序。

  第十種:桶排序

  為了節省空間和時間,我們需要指定要排序的資料中最小以及最大的數字的值,來方便桶排序演算法的運算。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2892516/,如需轉載,請註明出處,否則將追究法律責任。