快排是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é)果如下圖所示:
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
