一趟快速排序的演算法是:
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...