天天關注:快速排序原理圖解_快速排序原理
【資料圖】
1、快速排序的原理:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小。
2、然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
3、假設要排序的數組是A[1]……A[N],首先任意選取一個數據(通常選用第一個數據)作為關鍵數據,然后將所有比它的數都放到它前面,所有比它大的數都放到它后面,這個過程稱為一躺快速排序。
4、一躺快速排序的算法是:設置兩個變量I、J,排序開始的時候I:=1,J:=N;2、以第一個數組元素作為關鍵數據,賦值給X,即X:=A[1];3、從J開始向前搜索,即由后開始向前搜索(J:=J-1),找到第一個小于X的值,兩者交換;4、從I開始向后搜索,即由前開始向后搜索(I:=I+1),找到第一個大于X的值,兩者交換;5、重復第3、4步,直到I=J。
5、擴展資料:設要排序的數組是A[0]……A[N-1],首先任意選取一個數據(通常選用數組的第一個數)作為關鍵數據,然后將所有比它小的數都放到它前面,所有比它大的數都放到它后面,這個過程稱為一趟快速排序。
6、值得注意的是,快速排序不是一種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變動。
7、一趟快速排序的算法是:設置兩個變量i、j,排序開始的時候:i=0,j=N-1;2、以第一個數組元素作為關鍵數據,賦值給key,即key=A[0];3、從j開始向前搜索,即由后開始向前搜索(j--),找到第一個小于key的值A[j],將A[j]的值賦給A[i];4、從i開始向后搜索,即由前開始向后搜索(i++),找到第一個大于key的A[i],將A[i]的值賦給A[j];5、重復第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中A[j]不小于key,4中A[i]不大于key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。
8、找到符合條件的值,進行交換的時候i, j指針位置不變。
9、參考資料:百度百科 快速排序法。
本文分享完畢,希望對大家有所幫助。
標簽:
相關熱詞搜索: