丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

本文作者: AI研習(xí)社-譯站 2019-01-07 10:55
導(dǎo)語:排序是每個(gè)軟件工程師和開發(fā)人員都需要掌握的技能。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :

A tour of the top 5 sorting algorithms with Python code

作者 | George Seif

翻譯 | 鄧普斯?杰弗

校對 | shunshun        整理 | 菠蘿妹

原文鏈接:

https://medium.com/@george.seif94/a-tour-of-the-top-5-sorting-algorithms-with-python-code-43ea9aa02889


算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

排序算法的復(fù)雜度

排序是每個(gè)軟件工程師和開發(fā)人員都需要掌握的技能。不僅要通過編程面試,還要對程序本身有一個(gè)全面的理解。不同的排序算法很好地展示了算法設(shè)計(jì)上如何強(qiáng)烈的影響程序的復(fù)雜度、運(yùn)行速度和效率。

讓我們看一下前6種排序算法,看看如何在Python中實(shí)現(xiàn)它們!


  冒泡排序

冒泡排序通常是在CS入門課程中教的,因?yàn)樗宄匮菔玖伺判蚴侨绾喂ぷ鞯?,同時(shí)又簡單易懂。冒泡排序步驟遍歷列表并比較相鄰的元素對。如果元素順序錯(cuò)誤,則交換它們。重復(fù)遍歷列表未排序部分的元素,直到完成列表排序。因?yàn)槊芭菖判蛑貜?fù)地通過列表的未排序部分,所以它具有最壞的情況復(fù)雜度O(n^2)。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程


  選擇排序

選擇排序也很簡單,但常常優(yōu)于冒泡排序。如果您在這兩者之間進(jìn)行選擇,最好默認(rèn)選擇排序。通過選擇排序,我們將輸入列表/數(shù)組分為兩部分:已經(jīng)排序的子列表和剩余要排序的子列表,它們構(gòu)成了列表的其余部分。我們首先在未排序的子列表中找到最小的元素,并將其放置在排序的子列表的末尾。因此,我們不斷地獲取最小的未排序元素,并將其按排序順序放置在排序的子列表中。此過程將重復(fù)進(jìn)行,直到列表完全排序。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程


  插入排序

插入排序比冒泡排序和選擇排序既快又簡單。有趣的是,有多少人在玩紙牌游戲時(shí)會(huì)整理自己的牌!在每個(gè)循環(huán)迭代中,插入排序從數(shù)組中刪除一個(gè)元素。然后,它在另一個(gè)排序數(shù)組中找到該元素所屬的位置,并將其插入其中。它重復(fù)這個(gè)過程,直到?jīng)]有輸入元素。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程


  歸并排序

歸并排序是分而治之算法的完美例子。它簡單地使用了這種算法的兩個(gè)主要步驟:

(1)連續(xù)劃分未排序列表,直到有N個(gè)子列表,其中每個(gè)子列表有1個(gè)“未排序”元素,N是原始數(shù)組中的元素?cái)?shù)。

(2)重復(fù)合并,即一次將兩個(gè)子列表合并在一起,生成新的排序子列表,直到所有元素完全合并到一個(gè)排序數(shù)組中。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程


  快速排序

快速排序也是一種分而治之的算法,如歸并排序。雖然它有點(diǎn)復(fù)雜,但在大多數(shù)標(biāo)準(zhǔn)實(shí)現(xiàn)中,它的執(zhí)行速度明顯快于歸并排序,并且很少達(dá)到最壞情況下的復(fù)雜度O(n2) 。它有三個(gè)主要步驟:

(1)我們首先選擇一個(gè)元素,稱為數(shù)組的基準(zhǔn)元素(pivot)。

(2)將所有小于基準(zhǔn)元素的元素移動(dòng)到基準(zhǔn)元素的左側(cè);將所有大于基準(zhǔn)元素的元素移動(dòng)到基準(zhǔn)元素的右側(cè)。這稱為分區(qū)操作。

(3)遞歸地將上述兩個(gè)步驟分別應(yīng)用于比上一個(gè)基準(zhǔn)元素值更小和更大的元素的每個(gè)子數(shù)組。

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程


  喜歡嗎?

在Twitter上關(guān)注我,在那里我發(fā)布了最新最偉大的人工智能、技術(shù)和科學(xué)!



想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?

長按鏈接點(diǎn)擊打開或點(diǎn)擊【算法基礎(chǔ):五大排序算法python實(shí)戰(zhàn)教程】:

https://ai.yanxishe.com/page/TextTranslation/1374


AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

AI/機(jī)器學(xué)習(xí)年度2018年度進(jìn)展綜述

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

手把手:用PyTorch實(shí)現(xiàn)圖像分類器(第一部分)

手把手:用PyTorch實(shí)現(xiàn)圖像分類器(第二部分)


等你來譯:

對混亂的數(shù)據(jù)進(jìn)行聚類

初學(xué)者怎樣使用Keras進(jìn)行遷移學(xué)習(xí) 

強(qiáng)化學(xué)習(xí):通往基于情感的行為系統(tǒng) 

一文帶你讀懂 WaveNet:谷歌助手的聲音合成器


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

算法基礎(chǔ):五大排序算法Python實(shí)戰(zhàn)教程

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說