面试刷题必看!Python中的5大排序算法及其实现代码
排序是每個 IT 工程師和開發(fā)人員必備的知識技能。不僅要通過編程面試,而且要了解算法本身。不同的排序算法完美地展示了算法設(shè)計如何對程序的復(fù)雜性、速度和效率產(chǎn)生如此大的影響。
讓我們來看看排名前5,也是最常見,面試中經(jīng)常被問到的排序算法,看看如何用Python實現(xiàn)它們!
?
1.冒泡排序
冒泡排序是 CS 入門課程中最常講授的一種,因為它清楚地說明了排序的工作原理,同時又簡單又易于理解。 冒泡排序?qū)⒅鸩奖闅v列表并比較相鄰的元素對。如果元素的順序錯誤,則會交換這些元素。重復(fù)對列表中未排序部分的遍歷,直到對列表進(jìn)行排序。 因為冒泡排序重復(fù)地通過列表中未排序的部分,所以它的最壞情況復(fù)雜性為O(n2)。
?
2.選擇排序
選擇排序也相當(dāng)簡單,優(yōu)于冒泡排序。如果你要在這兩者之間進(jìn)行選擇,那么最好使用默認(rèn)的“右選擇排序”。使用選擇排序,我們將輸入列表/數(shù)組分為兩部分: 已排序項的子列表和構(gòu)成列表其余部分的剩余項的子列表。
我們 首先在未排序的子列表中找到最小的元素,并將其放在已排序子列表的末尾。 因此,我們不斷地獲取最小的未排序元素,并將其按排序順序放入已排序的子列表中。此過程將重復(fù)進(jìn)行,直到列表完全排序。
?
3.插入排序
插入排序比冒泡排序和選擇排序都要快,而且可以說更加簡單。就像在玩紙牌游戲時,洗牌的過程就是反復(fù)進(jìn)行插入排序! 在每次循環(huán)迭代中,插入排序從數(shù)組中刪除一個元素。然后在另一個排序數(shù)組中查找該元素所屬的位置,并將其插入其中。 它重復(fù)這個過程,直到?jīng)]有輸入元素保留。
?
4.合并排序
合并排序是一個完美的分而治之的算法例子。使用這種算法只需要通過以下兩個主要步驟:
- (1) 連續(xù)分割未排序的列表,直到有N個子列表,其中每個子列表都有1個“未排序”的元素,N是原始數(shù)組中的元素數(shù)。
- (2) 反復(fù)合并,即一次將兩個子列表合并在一起,生成新的已排序子列表,直到所有元素都完全合并到一個已排序的數(shù)組中。
?
5.快速排序
快速排序也是一種分而治之的算法,與合并排序一樣。盡管它有點復(fù)雜,但在大多數(shù)標(biāo)準(zhǔn)實現(xiàn)中,它的執(zhí)行速度比合并排序快得多,而且很少達(dá)到O(n2)的最壞情況復(fù)雜度。它有三個主要步驟:
- (1) 我們首先從數(shù)組中選擇一個元素,稱之為pivot。
- (2) 將小于軸的所有元素移到軸的左側(cè);將大于軸的所有元素移到軸的右側(cè)。這稱為分區(qū)操作。
- (3) 遞歸地將上述2個步驟分別應(yīng)用于元素的每個子數(shù)組,這些元素的值比上一個軸的值小或大。如果大家對Python感興趣的話,可以加一下我的微信哦:abb436574,免費領(lǐng)取一套學(xué)習(xí)資料和視頻課程喲~
總結(jié)
以上是生活随笔為你收集整理的面试刷题必看!Python中的5大排序算法及其实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 普通程序员,光靠GitHub打赏就年入7
- 下一篇: 一个月学会Python,零基础入门数据分