六星源課堂:Python排序算法有哪幾種?
python排序算法有哪些?python中常見(jiàn)的排序算法有:插入排序、選擇排序、冒泡排序、快速排序、歸并排序、希爾排序等十種,接下來(lái)我們一起來(lái)看看詳細(xì)的內(nèi)容介紹。

第一種:插入排序
從第二個(gè)元素開(kāi)始和前面的元素進(jìn)行比較,如果前面的元素比當(dāng)前元素大,則將前面元素后移,當(dāng)前元素依次往前,直到找到比它小或等于它的元素插入在其后面,然后選擇第三個(gè)元素,重復(fù)上述操作,進(jìn)行插入,依次選擇到最后一個(gè)元素,插入后即完成所有排序。
第二種:選擇排序
設(shè)第一個(gè)元素為比較元素,依次和后面的元素比較,比較完所有元素找到最小的元素,將它和第一個(gè)元素互換,重復(fù)上述操作,我們找出第二小的元素和第二個(gè)位置的元素互換,以此類(lèi)推找出剩余最小元素將它換到前面,即完成排序。
第三種:冒泡排序
冒泡排序也是一種簡(jiǎn)單直觀的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢浮到數(shù)列的頂端。
第四種:快速排序
快速排序使用分治法策略來(lái)把一個(gè)序列分為較小和較大的2個(gè)子序列,然后遞歸地排序兩個(gè)子序列。
第五種:歸并排序
歸并排序是創(chuàng)建在歸并操作上的一種有效的排序算法,該算法是采用分治法的一個(gè)非常典型的應(yīng)用。
分治法:
分割:遞歸地把當(dāng)前序列平均分割成兩半
集成:在保持元素順序的同時(shí)將上一步得到的子序列集成到一起(歸并)
第六種:希爾排序
希爾排序是基于插入排序改進(jìn)后的算法,因?yàn)楫?dāng)數(shù)據(jù)移動(dòng)次數(shù)太多時(shí)會(huì)導(dǎo)致效率低下。所以我們可以先讓數(shù)組整體有序(剛開(kāi)始移動(dòng)的幅度大一點(diǎn),后面再小一點(diǎn)),這樣移動(dòng)的次數(shù)就會(huì)降低,進(jìn)而提高效率。
第七種:基數(shù)排序
基數(shù)排序?qū)儆诜峙涫脚判颍址Q(chēng)桶子法或者bin sort,顧名思義,它是透過(guò)鍵值的部分資訊,將要排序的元素分配至某些桶中,藉以達(dá)到排序的作用,基數(shù)排序法是屬于穩(wěn)定性的排序,其時(shí)間復(fù)雜度O(nlog(r)m),其中r為所采取的基數(shù),而m為堆數(shù),在某些時(shí)候,基數(shù)排序法的效率高于其它的穩(wěn)定性排序法。
第八種:計(jì)數(shù)排序
計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開(kāi)辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
第九種:堆排序
堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。堆積是一個(gè)近似完全二叉樹(shù)的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì):即子結(jié)點(diǎn)的鍵值或索引總是小于(或者大于)它的父節(jié)點(diǎn)。堆排序可以說(shuō)是一種利用堆的概念來(lái)排序的選擇排序。
第十種:桶排序
為了節(jié)省空間和時(shí)間,我們需要指定要排序的數(shù)據(jù)中最小以及最大的數(shù)字的值,來(lái)方便桶排序算法的運(yùn)算。
以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多Python技巧,歡迎持續(xù)關(guān)注六星源課堂!