第一次po請多多指教!!
quicksort之前已經由網友amd0607大 發表過java版
我的是C版 用的方式是相似的..呵呵..
請各位參考參考囉!!
========================================================
Quick sort快速排序法
演算法:
選出一個pivot 將每個數與其做比較 大的一邊 小的一邊 (1)
剛的動作稱為partition
將pivot置入兩者間
並將左右兩堆再次送入quick_sort
(1)方法:
以第一個數為pivot 設定一個標的pt_big指向第二個元素
另一個標的pt_small 指向最後一個元素
pt_big的作用為向右尋找一個比pivot大的數
pt_small則由後向左尋找一個比pivot小的數
當雙方都有找到的時候 便做交換 然後繼續找 所以for loop不用初始值
而如果pt_big>pt_small時表示兩個標的交錯了 也就是沒找到
此時跳出分區段的迴圈
然後位在pt_small的值與pivot做交換
於是又分成兩區段(begin~ pt_small-1) (pt_big ~ end) 分別再做quick sort
※排到後面的時候 剩下只有少數元素 又必須分堆 標的尋找 有點浪費時間和沒有效率
也許可以設成 元素少於某個數字時 便改做其他排序 例如insertion sort等
可以自行試試看
輸入為一串數字 並以一個字母代表結束
如果只輸入一個字母便結束程式
Sample Input:
15 18 7 11 3 19 21 12 20 q
32 65 95 63 21 00 33 22 22 33 a
q
輸出為排序好的數列
Sample Output:
3 7 11 12 15 18 19 20 21
0 21 22 22 32 33 33 63 65 95
========================= ..
訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容