c 實現快速排序 從小到大

2021-10-04 21:38:37 字數 965 閱讀 3491

從數列中挑出乙個元素,稱為 「基準」(pivot);

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;

遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

第一種:分割槽遞迴

//嚴蔚敏《資料結構》標準分割函式

paritition

(int a,

int low,

int high)

a[low]

= a[high]

;while

(low < high && a[low]

<= pivot)

a[high]

= a[low];}

a[low]

= pivot;

return low;

}void

quicksort

(int a,

int low,

int high)

//快排母函式

}

第二種:遞迴

void

quicksort

(int arr,

int start,

int end)

if(arr[left]

>= arr[end]

)swap

(arr[left]

, arr[end]);

else

left++

;quicksort

(arr, start, left -1)

;quicksort

(arr, left +

1, end)

;}

氣泡排序(從小到大)

氣泡排序是一種極其簡單的排序演算法,也是我所學的第乙個排序演算法。它重複地走訪過要排序的元素,一次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個演算法的名字由來是因為越小 或越大 的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的運作如下 比較相鄰...

氣泡排序詳解(從小到大)

實現 將數列中的第乙個元素和第二個元素比較數值大小,若第乙個元素比第二個元素大,則交換位置。然後再將第二個元素和第三個元素比較數值大小,第三個元素和第四個元素比較 依次不斷地比較,交換。不斷迴圈比較,直到不再發生交換,這就表明排序已完成,此時得到就是乙個有序數列。簡單來說就是不斷迴圈比較數列中相鄰元...

從小到大排序

六一兒童節,老師帶了很多好吃的巧克力到幼兒園。每塊巧克力j的重量為w j 對於每個小朋友i,當他分到的巧克力大小達到h i 即w j h i 他才會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w i 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。第一行...