快排是python經典算法之一。
1、下面講解的是什么是快排和快排的圖示。
2、快排是一種解決排序問題的運算方法。
3、快排的原理:在數(shù)組中任意選擇一個數(shù)字作為基準,用數(shù)組的數(shù)據(jù)和基準數(shù)據(jù)進行比較,比基準數(shù)字打的數(shù)字的基準數(shù)字的右邊,比基準數(shù)字小的數(shù)字在基準數(shù)字的左邊,
第一次排序之后分為比基準數(shù)據(jù)大或比基準數(shù)據(jù)小兩個部分,用剛開始的方法繼續(xù)排序,直到每個排序分組中只有一個數(shù)據(jù)或沒有數(shù)據(jù)為止。
4、下面以[ 7 91 23 1 6 3 79 2 ]數(shù)組為例子,進行快排運算。
5、選基準:選擇數(shù)組里的第一個數(shù)字(可以選擇任意數(shù)字)為基準數(shù)字
6、從j指針開始和基準數(shù)據(jù)比較之后,其中2比7小,所以將2排到7的左邊。此時進行了交叉移動,所以下一個比較的是i指針對應的數(shù)據(jù)。
7、i指針與基準數(shù)據(jù)7比較,其中91比7大,所以將91排到右邊,此時又一次進行了交叉移動,所以下一個比較的是j指針對應的數(shù)據(jù)。
8、j指針與基準數(shù)據(jù)7比較,其中79比7大,所以將79排到右邊,此時是同側移動,所以下一個比較的是j指針對應的數(shù)據(jù)。
9、j指針與基準數(shù)據(jù)7比較,其中3比7小,所以將3排到左邊,此時又一次進行了交叉移動,所以下一個比較的是i指針對應的數(shù)據(jù)。
10、i指針與基準數(shù)據(jù)7比較,其中23比7大,所以將23排到右邊,此時又一次進行了交叉移動,所以下一個比較的是j指針對應的數(shù)據(jù)。
11、j指針與基準數(shù)據(jù)7比較,其中6比7小,所以將6排到左邊,此時又一次進行了交叉移動,所以下一個比較的是i指針對應的數(shù)據(jù)。
12、i指針與基準數(shù)據(jù)7比較,其中1比7小,所以將1排到右邊,此時所有的數(shù)據(jù)都進行了一次排序。
13、第一趟排序之后的結果如下。根據(jù)上面的方法,基準數(shù)據(jù)的左右兩側繼續(xù)快排,直到數(shù)組沒有數(shù)據(jù)或數(shù)組數(shù)據(jù)為0
14、最后的排序結果如下圖所示:
新聞熱點
疑難解答
圖片精選