C 快速排序
阿新 • • 發佈:2018-12-21
快速排序就是對冒泡法進行一種改進,基本思想基於分治法,在L[1…n]選一個數為基準,比他小的往前,比他大的往後,這樣得到兩個L,在這個兩個L中繼續挑基準,小的往前,大的往後,循序往復,知道只有一個數字就OK了。
程式碼如下
//選擇排序
int Pratition(int a[], int low, int high){
int pivot = a[low];
while (low < high) {
while (low < high && a[high] > pivot) {
high--;
}
a[low] = a[high];
while (low < high && a[low] < pivot) {
low++;
}
a[high] = a[low];
}
a[low] = pivot;
return low;
}
void QuickSort(int a[], int low, int high)
{
if(low < high) {
int pivotopos = Pratition(a, low, high) ;
QuickSort(a, low, pivotopos-1);
QuickSort(a, pivotopos+1, high);
}
}
4210359768 0,5,9
3210459768 0,4,4
0213459768 0,3,3
0213459768 0,0,2
0123459768 1,2,2
0123458769 6,9,9
0123456789 6,8,8
0123456789 6,6,7