[問題] 動態記憶體配置去快速排序(qsort)問題

看板C_and_CPP (C/C++)作者 (我也來56)時間14年前 (2011/11/20 01:26), 編輯推噓0(0010)
留言10則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux vim C GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 大家好 這個範例是我簡化過得 簡單來說 我有一串要輸入的檔案 裡面一串數字 要去作排序 從小到大 但是每次要排的時候 我只知道這一串數字最多有幾個 我希望排序的時候把一些沒數值的檔案不要去作排序 例如我可能malloc的時候給200個 可是可能只有其中 100個有值 我希望只排有值得這100個 有可能嗎? 錯誤結果(Wrong Output): 現在遇到的問題是 假設我給15個malloc 但是我只有 4 6 1 2 9 這五個數字再哪個位子我也不知道... (應該是說我真正要算的東西很大 不可能一個一個去找) 所以我要malloc要給15個 qsort那邊也要給15個 排序效率就會很差(實際上要排50萬) 現在希望是只要能找到最小的前五個就好 但是我去排序 要加快排序效率 qsort那邊給少 會抓不到後面幾個值去排序 出來的值就會不正確 有辦法解決嗎? 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/d0VGpfet 我CODE能力完全看找資料以及書慢慢摸索的 如果有很多贅字請大家見諒 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.220.160 ※ 編輯: CClai5566 來自: 111.240.220.160 (11/20 01:29)

11/20 02:06, , 1F
取最大or 最小前n個記得有個專門的演算法不用整個排序的
11/20 02:06, 1F

11/20 02:13, , 3F
#Selecting_k_smallest_or_largest_elements
11/20 02:13, 3F

11/20 02:15, , 4F
還有你code 排版有點可怕...
11/20 02:15, 4F

11/20 02:48, , 5F
讀取的時候不知道有沒有值嗎?
11/20 02:48, 5F

11/20 02:48, , 6F
知道的話一開始就忽略他不要放進陣列裡?
11/20 02:48, 6F

11/20 02:51, , 7F
先把你的有效值盡量移到陣列前面,連續的放在一起
11/20 02:51, 7F

11/20 02:52, , 8F
原本分散在100個空間裡的20個,就集中到前20個空間
11/20 02:52, 8F

11/20 11:02, , 9F
為了從50萬個值裡面找出前幾個小的值而sort 好耗時Q_Q
11/20 11:02, 9F

11/20 12:00, , 10F
只找最小前五個 開一個五格的空間 掃過整個input一次就好了
11/20 12:00, 10F
文章代碼(AID): #1En-RI6E (C_and_CPP)
文章代碼(AID): #1En-RI6E (C_and_CPP)