[爆卦]qsort原理是什麼?優點缺點精華區懶人包

為什麼這篇qsort原理鄉民發文收入到精華區:因為在qsort原理這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者georgeya007 (綠茶不綠)看板C_and_CPP標題[問題] qsort排列字串問題時...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)


c++


問題(Question):

我的目標 是要 先輸入一個n決定要輸入幾個字串

然後 把這些字串依照大小順序排列

這些字串可以是數字 也可以是英文字

因為老師沒有教過qsort的用法 所以我的CODE也是從GOOGLE上找來的

(而且他又規定要O(nlogn)的速度)

所以也不能自己打自己的排列(應該說我根本不知道該怎麼打~"~)


http://codepad.org/o9NFsIdb

這個是原本自己先定義一個字串陣列 然後讓它排序

4 123 ABC xyz Charlie請按任意鍵繼續 . . .

這是輸出的結果 看起來是有按照字串的大小排列


但是如果 我把它改成自己輸入字串

http://codepad.org/Ppo7WEud

它就會跑出一些奇怪的符號 或者根本什麼都跑不出來


不知道這是記憶體儲存的問題還是什麼

希望有人可以幫我看一下@@

還是這個題目本來就不應該用這樣做呢?

有什麼更好的方法嗎


感謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.139.39
stimim:先了解 qsort 的四個參數分別要傳什麼吧 04/16 14:27
georgeya007:我其實看不懂它第四個參數到底是怎麼運作的@@ 04/16 14:33
georgeya007:GOOGLE過了還是沒什麼頭緒 身旁的書也沒有提到 04/16 14:34
georgeya007:是因為它sort完之後 會排到陣列的最後面嗎 04/16 14:44
diabloevagto:http://ppt.cc/rBIw 動畫 04/16 15:34
stimim:http://ppt.cc/PChU 用法說明,內部原理看樓上的 04/16 16:14
bob123:你應該要修改compareInt使他適用於比較字串長度...目前是 04/16 16:38
bob123:前4個字一樣後面就不管囉 04/16 16:41
bob123:至於印出來會這樣..跟你的參數有關 04/16 16:44
georgeya007:那請問 如果它超過四個字 但是長度一樣 要怎麼比呢? 04/16 20:41
diabloevagto:應該是從第一個開始比 04/16 20:44
georgeya007:我還是不太清楚為什麼他只會比四個字@@可以解釋一下嗎 04/16 22:43
diabloevagto:---------請忽略上面那堆,寫的有點亂,下面重回---- 04/16 23:19
diabloevagto:你那段程式會錯是因為你沒有給予初值,而且你將100 04/16 23:20
diabloevagto:筆資料都一起下去排序,其中那些亂碼也都一起排序 04/16 23:20
diabloevagto:如果你在排序後將100筆資料都cout出來你會發現你輸入 04/16 23:21
diabloevagto:的資料都有正常排序。 04/16 23:21
diabloevagto:你程式有兩種解法 04/16 23:22
diabloevagto:1.將所有資料都給初始值,但你會排序一堆空值,這樣 04/16 23:22
diabloevagto:會浪費你的時間,並且印出一堆'\0' 04/16 23:23
diabloevagto:2.sizeof(str_buf)/sizeof(str_buf[0])改成n 04/16 23:23
diabloevagto:只排序你所輸入的資料筆數,這是比較好的解法 04/16 23:24
diabloevagto:那些資料都會放在最前面n個 04/16 23:24
diabloevagto:另外幫我把上面很亂的那堆回文修掉吧... 04/16 23:25
※ 編輯: georgeya007 來自: 140.113.139.39 (04/16 23:35)
bob123:函式取名為compareInt..顧名思義是指用來做int的比較... 04/17 01:47
bob123:會只取4個字的原因是他把char指標轉為int指標再取值 04/17 01:49
bob123:int為4byte所以取4個字 另我前面推文誤以為是要比長度 抱歉 04/17 01:59
bob123:題目應該是需要用strcmp/strncmp 04/17 02:01

你可能也想看看

搜尋相關網站