[問題] 關於qsort

看板C_and_CPP作者 (阿楷)時間14年前 (2011/10/24 19:00), 編輯推噓6(6014)
留言20則, 10人參與, 最新討論串1/1
開發平台(Platform): VC++2008 問題(Question):流程不是很懂 程式碼(Code): #define SWAP(a,b) { int temp = b; b = a; a = temp; } void qsort(int* x, int l, int r) { int i, last; if (l >= r) return; else last = l; for (i = l + 1; i <= r; i++) if (x[i] < x[l]) { last++; SWAP(x[last],x[i]); } SWAP(x[last],x[l]); qsort(x, l, last - 1); qsort(x, last + 1, r); } 補充說明(Supplement): 為什麼x[i] < x[l]就要交換x[last]跟x[i] 然後又把x[last]跟x[l]交換呢? 最後為何要用兩個qsort呢? 完全沒學過資料結構就要我用這個qsort去做linked list orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.171.24

10/24 19:05, , 1F
如果是完全看不懂也很難用三言兩語去教會你
10/24 19:05, 1F

10/24 19:06, , 2F
你要做的是翻開資料結構或演算法的書找到sorting的章節
10/24 19:06, 2F

10/24 19:09, , 3F
或者google "quicksort 原理"
10/24 19:09, 3F

10/24 19:10, , 4F
看來你是完全不懂...qsort怎麼做linked list我也不會
10/24 19:10, 4F

10/24 19:11, , 5F
先問你會不會任何一種基本的sort?
10/24 19:11, 5F

10/24 19:13, , 6F
簡答就是說把小的放左邊一堆,大的放右邊一堆
10/24 19:13, 6F

10/24 19:13, , 7F
然後divide and conquer再遞回下去分別做這兩堆
10/24 19:13, 7F

10/24 19:14, , 8F
應該是 qsort方法 架構在 linked list基礎上?
10/24 19:14, 8F

10/24 19:16, , 9F
直覺得想法應該是他要對linked list做qsort吧
10/24 19:16, 9F

10/24 19:42, , 10F
把link list sort... 用combine sort不是比較簡單嗎...
10/24 19:42, 10F

10/24 20:04, , 11F
^merge sort
10/24 20:04, 11F

10/24 21:41, , 12F
10/24 21:41, 12F

10/24 21:55, , 13F
不好意思表達不好 我要做的就是e大所說的...
10/24 21:55, 13F

10/24 21:56, , 14F
這是一個題目他規定要用qsort...
10/24 21:56, 14F

10/24 22:04, , 15F
10/24 22:04, 15F

10/25 01:00, , 16F
Data Structures And Program Design In C(或C++,大學圖書館
10/25 01:00, 16F

10/25 01:00, , 17F
找任一本)裡的排序那章,有原po程式的圖解和說明,至於linked
10/25 01:00, 17F

10/25 01:01, , 18F
list的版本好像在習題,網路上找此書C++版本的習題解答參考
10/25 01:01, 18F

10/25 10:25, , 19F
又有人點名我了....
10/25 10:25, 19F

10/25 22:29, , 20F
↖XDD
10/25 22:29, 20F
文章代碼(AID): #1EfKLJRt (C_and_CPP)