資料結構學習之 快速排序法

2021-06-13 07:15:06 字數 1114 閱讀 1877

/*

2023年3月25日 21:21:39 xulei

快速排序法:

1. 先找到第乙個元素的位置, 把需要排序的序列分成兩個部分;

2. 分別對左/右部分進行第一步操作, 直到左右部分只有乙個元素為止.

如陣列: 9 0 8 10 -5 2 13 , 公升序排序

1. 定義中間值: val 儲存第乙個元素值, 兩個指標:low->指向第乙個元素, high->指向最後乙個元素.

2. 比較high 指向元素值, 如果大於val, 左移, 小於val 將值賦給low指向位置, 不再移動.

3. 比較low 指向元素值, 如果小於val, 右移, 大於val 將值賦給high指向位置, 不再移動.

4. 重複2, 3 步, 直到low >= high 停止移動, 這時就找到了第乙個元素的位置.

5. 將序列用剛確定了的第乙個元素位置分成左右兩部分, 左右兩部分分別重複2-4步.

*/#include #include int findval(int *a, int low, int high);

int quicksort(int *a, int low, int high);

int main(int argc, char **argv)

; int i = 0;

quicksort(a, 0, 5);

for(i = 0; i < 6; i++)

printf("\n");

return 0;}/*

確定第乙個元素位置, 並返回該位置

*/int findval(int *a, int low, int high)

a[low] = val; // 將第乙個元素放放已確定了的位置

return low; // 返回當前位置

}/*

int *a: 需要排序的陣列(這裡假設為int陣列)

low 需要排序的陣列第乙個元素位置, high 需要排序陣列的最後乙個元素位置.

*/int quicksort(int *a, int low, int high)

return 0;

}

資料結構學習筆記 快速排序

今天花了一上午的時間終於明白快速排序的原理了,這裡和大家分享一下。比如有一串數字 52684 37,我們通過快速排序先找出第乙個數字 5 在這一串數字中的位置,然後再對數字 5 兩邊的數字進行同樣的排序方法,最終將整串數字排序完畢。找到第乙個數字 5 的具體步驟如下 從這串數字的兩頭出發,把第乙個數...

浙大資料結構學習 快速排序

給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 資料1 只有1個元素 資料2 11個不相同的整數,測試基本正確性 資料3 103個隨機整數 資料4 104個隨機整數 資料5 105個隨機整數 資料6 105個...

資料結構學習之 排序高階(堆排序)

氣泡排序 一種比較容易理解的排序演算法,可以優化的程度也比較有限 平均 o n 2 最壞 o n 2 最好 o n 最好情況需要在進行迴圈之前加入標誌位,若一次遍歷中,沒有任何兩個資料被交換,則認為序列已經有序,跳出迴圈。此時,時間複雜度為o n 插入排序 選擇乙個資料插入到前面已經排好的有序佇列之...