python快排算法詳解
快排是python經(jīng)典算法之一。
1、下面講解的是什么是快排和快排的圖示。
2、快排是一種解決排序問(wèn)題的運(yùn)算方法。
3、快排的原理:在數(shù)組中任意選擇一個(gè)數(shù)字作為基準(zhǔn),用數(shù)組的數(shù)據(jù)和基準(zhǔn)數(shù)據(jù)進(jìn)行比較,比基準(zhǔn)數(shù)字打的數(shù)字的基準(zhǔn)數(shù)字的右邊,比基準(zhǔn)數(shù)字小的數(shù)字在基準(zhǔn)數(shù)字的左邊,
第一次排序之后分為比基準(zhǔn)數(shù)據(jù)大或比基準(zhǔn)數(shù)據(jù)小兩個(gè)部分,用剛開(kāi)始的方法繼續(xù)排序,直到每個(gè)排序分組中只有一個(gè)數(shù)據(jù)或沒(méi)有數(shù)據(jù)為止。
4、下面以[ 7 91 23 1 6 3 79 2 ]數(shù)組為例子,進(jìn)行快排運(yùn)算。
5、選基準(zhǔn):選擇數(shù)組里的第一個(gè)數(shù)字(可以選擇任意數(shù)字)為基準(zhǔn)數(shù)字
6、從j指針開(kāi)始和基準(zhǔn)數(shù)據(jù)比較之后,其中2比7小,所以將2排到7的左邊。此時(shí)進(jìn)行了交叉移動(dòng),所以下一個(gè)比較的是i指針對(duì)應(yīng)的數(shù)據(jù)。
7、i指針與基準(zhǔn)數(shù)據(jù)7比較,其中91比7大,所以將91排到右邊,此時(shí)又一次進(jìn)行了交叉移動(dòng),所以下一個(gè)比較的是j指針對(duì)應(yīng)的數(shù)據(jù)。
8、j指針與基準(zhǔn)數(shù)據(jù)7比較,其中79比7大,所以將79排到右邊,此時(shí)是同側(cè)移動(dòng),所以下一個(gè)比較的是j指針對(duì)應(yīng)的數(shù)據(jù)。
9、j指針與基準(zhǔn)數(shù)據(jù)7比較,其中3比7小,所以將3排到左邊,此時(shí)又一次進(jìn)行了交叉移動(dòng),所以下一個(gè)比較的是i指針對(duì)應(yīng)的數(shù)據(jù)。
10、i指針與基準(zhǔn)數(shù)據(jù)7比較,其中23比7大,所以將23排到右邊,此時(shí)又一次進(jìn)行了交叉移動(dòng),所以下一個(gè)比較的是j指針對(duì)應(yīng)的數(shù)據(jù)。
11、j指針與基準(zhǔn)數(shù)據(jù)7比較,其中6比7小,所以將6排到左邊,此時(shí)又一次進(jìn)行了交叉移動(dòng),所以下一個(gè)比較的是i指針對(duì)應(yīng)的數(shù)據(jù)。
12、i指針與基準(zhǔn)數(shù)據(jù)7比較,其中1比7小,所以將1排到右邊,此時(shí)所有的數(shù)據(jù)都進(jìn)行了一次排序。
13、第一趟排序之后的結(jié)果如下。根據(jù)上面的方法,基準(zhǔn)數(shù)據(jù)的左右兩側(cè)繼續(xù)快排,直到數(shù)組沒(méi)有數(shù)據(jù)或數(shù)組數(shù)據(jù)為0
14、最后的排序結(jié)果如下圖所示:
相關(guān)文章
解決python3捕獲cx_oracle拋出的異常錯(cuò)誤問(wèn)題
今天小編就為大家分享一篇解決python3捕獲cx_oracle拋出的異常錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python生成詞云的實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)?lái)一篇python生成詞云的實(shí)現(xiàn)方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼
這篇文章主要介紹了使用python連接Linux服務(wù)器發(fā)送指定命令,首先安裝paramiko庫(kù),使用paramiko庫(kù)連接linux,使用paramiko庫(kù)上傳下載文件,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10Jupyter Notebook的連接密碼 token查詢方式
這篇文章主要介紹了Jupyter Notebook的連接密碼 token查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python使用SQLite和Excel操作進(jìn)行數(shù)據(jù)分析
這篇文章主要介紹了Python使用SQLite和Excel操作進(jìn)行數(shù)據(jù)分析,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python一鍵實(shí)現(xiàn)PDF文檔批量轉(zhuǎn)Word
無(wú)論是在工作還是學(xué)習(xí)當(dāng)中,大家都會(huì)遇到這樣一個(gè)問(wèn)題,將“PDF當(dāng)中的內(nèi)容(文本和圖片)轉(zhuǎn)換為Word的格式”,本文將用Python實(shí)現(xiàn)一鍵批量將PDF轉(zhuǎn)Word,需要的可以參考一下2022-08-08Python multiprocessing.Manager介紹和實(shí)例(進(jìn)程間共享數(shù)據(jù))
這篇文章主要介紹了Python multiprocessing.Manager介紹和實(shí)例(進(jìn)程間共享數(shù)據(jù)),本文介紹了Manager的dict、list使用例子,同時(shí)介紹了namespace對(duì)象,需要的朋友可以參考下2014-11-11