廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4039 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
pkpk0808 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][範例] [C]quicksort
第一次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 可以看到全部內容




獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2005-01-26 17:48 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.108714 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言