資料結構 快速排序演算法

2021-07-15 21:26:14 字數 1111 閱讀 1796

一趟快速排序的演算法是:

1)設定兩個變數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,直至找到為止。找到符合條件的值,進行交換的時候i, j指標位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令迴圈結束)。(1

)基本思想:選擇乙個基準元素

,通常選擇第乙個元素或者最後乙個元素

,通過一趟掃瞄,將待排序列分成兩部分

,一部分比基準元素小

,一部分大於等於基準元素

,此時基準元素在其排好序後的正確位置

,然後再用同樣的方法遞迴地排序劃分的兩部分。

(2)實現**如下:

public class quicksort;   

public quicksort()     

list[low] = list[high];   //比中軸小的記錄移到低端     

while (low < high && list[low] <= tmp)      list[high] = list[low];   //比中軸大的記錄移到高階     

}     

list[low] = tmp;              //中軸記錄到尾     

return low;                   //返回中軸的位置  

}    

public void _quicksort(int list, int low, int high) 

}   

public void quick(int a2) 

} public static void main(string args) 

}

資料結構 排序演算法 快速排序

演算法描述 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地...

資料結構與演算法 排序演算法 快速排序

源 cpp view plain copy include void quicksort int int,int intfindposs int int,int intmain quicksort arry,0,6 printf after sorted n for i 0 i 7 i printf...

資料結構排序演算法之快速排序

快速排序 includeusing namespace std void swap int arr,int i,int j void quicksort int arr,int left,int right arr i temp quicksort arr,left,i 1 quicksort ar...