python快排算法詳解
快排是python經(jīng)典算法之一。
1、下面講解的是什么是快排和快排的圖示。

2、快排是一種解決排序問題的運(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è)部分,用剛開始的方法繼續(xù)排序,直到每個(gè)排序分組中只有一個(gè)數(shù)據(jù)或沒有數(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指針開始和基準(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ù)組沒有數(shù)據(jù)或數(shù)組數(shù)據(jù)為0

14、最后的排序結(jié)果如下圖所示:

相關(guān)文章
一文解密Python函數(shù)的實(shí)現(xiàn)原理
函數(shù)是任何一門編程語(yǔ)言都具備的基本元素,它可以將多個(gè)要執(zhí)行的操作組合起來,一個(gè)函數(shù)代表了一系列的操作。那就來看看Python函數(shù)的實(shí)現(xiàn)原理吧2023-03-03
關(guān)于tensorflow中tf.keras.models.Sequential()的用法
這篇文章主要介紹了關(guān)于tensorflow中tf.keras.models.Sequential()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
詳解django使用include無法跳轉(zhuǎn)的解決方法
這篇文章主要介紹了詳解django使用include無法跳轉(zhuǎn)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
瀏覽器常用基本操作之python3+selenium4自動(dòng)化測(cè)試(基礎(chǔ)篇3)
瀏覽器常用基本操作有很多種,今天給大家介紹python3+selenium4自動(dòng)化測(cè)試的操作方法,是最最基礎(chǔ)的一篇,對(duì)python3 selenium4自動(dòng)化測(cè)試相關(guān)知識(shí)感興趣的朋友一起看看吧2021-05-05
python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊具體操作
這篇文章主要介紹了python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊,本文給大家分享具體操作代碼及需要的軟件,需要的朋友可以參考下2021-10-10
Python時(shí)間差中seconds和total_seconds的區(qū)別詳解
今天小編就為大家分享一篇Python時(shí)間差中seconds和total_seconds的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Opencv+Python實(shí)現(xiàn)圖像運(yùn)動(dòng)模糊和高斯模糊的示例
今天小編就為大家分享一篇關(guān)于Opencv+Python實(shí)現(xiàn)圖像運(yùn)動(dòng)模糊和高斯模糊的示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04

