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