[問題] 關於在這種情況之下sort的複雜度

看板Prob_Solve (計算數學 Problem Solving)作者 (今天早上)時間14年前 (2010/06/28 14:51), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/1
假設我現在要將一堆資料做排序(int) 但是這些資料只有一部分是沒有排序到的 EX: 1,2,3,4,5,6,7,8,-5,-6,-7,-4,-2,-8,-1,9,10,11,12,13,14,15 簡單來說其實就是只要把那堆負數抓出來排序完丟到最前面 但是負數在哪以及有多少個完全沒辦法知道 在這種情況之下哪一種排序最好呢? 我自己的想法是merge sort 因為好像要交換的case不多@@? 我也不是很清楚 所以上來問問大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.15.156 ※ 編輯: lO 來自: 220.132.15.156 (06/28 14:52) ※ lO:轉錄至看板 C_and_CPP 06/28 14:52

06/28 15:30, , 1F
只排序負數那段,在整段搬到最前面就好啦
06/28 15:30, 1F

06/28 15:34, , 2F
關鍵應該是"負數在哪以及有多少個完全沒辦法知道"
06/28 15:34, 2F

06/28 15:39, , 3F
其實我例子舉得不好 負數是連在一起沒錯 但是不一定只有一段
06/28 15:39, 3F

06/28 15:40, , 4F
正數一定是連續且排序的 只不過也是一段一段的
06/28 15:40, 4F

06/28 15:50, , 5F
那就把負數全搬到前面在排序呀。把排序好的跟沒排序混在一起
06/28 15:50, 5F

06/28 15:51, , 6F
,怎樣也不可能比分開來快。
06/28 15:51, 6F

06/28 16:46, , 7F
如果未排序元素所佔的比例很低 用insertion sort就可以了吧
06/28 16:46, 7F

06/28 20:22, , 8F
這剛好是 flashsort 的適用領域, 對你這 case 應該有 O(n)
06/28 20:22, 8F
文章代碼(AID): #1CA4Px21 (Prob_Solve)
文章代碼(AID): #1CA4Px21 (Prob_Solve)