/*
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 插入排序 選擇乙個資料插入到前面已經排好的有序佇列之...