第一次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 可以看到全部内容