看板 C_and_CPP 關於我們 聯絡資訊
想請問有一個陣列 int a[100]={1,8,7,3,9,5,4,6,....,2,......} 使用c++的sort 可以由小排到大 排序完順序 陣列的內容是 int a[100]={1,2,3,4......} 但是如果想知道 原本的2 在陣列的第幾個位置 還有 如果數字2 是有重複的呢? 要如何知道呢??? 最主要的是 原先陣列的數字你是不知道 (那些數字是經過前面一些運算而來) 排序完 找到最小的數字後 , 要怎麼找到它原有的位置呢??? 用for迴圈去try嗎??? 謝謝高手們的指教~~!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.96.182
diabloevagto:先把2個位置存起來or排序到別的陣列 11/21 22:49
x000032001:把int改成一個struct XD 11/21 22:56
poyenc:數字不重複? 11/21 23:07
※ 編輯: ieck 來自: 140.116.96.182 (11/21 23:17)
ieck:D大 假設2的數字 是要經過運算才得知 就無法事先存起來了?! 11/21 23:18
ieck:p大 數字可能會有重複~!!! 11/21 23:19
x000032001:數字有重複 會變得很麻煩 有1或多個解 11/21 23:25
otira:把int改成structure 順便儲存原本位置(炸 11/21 23:28
diabloevagto:有一個排序是同一個數字,不會改變相對位置的,可以 11/21 23:29
diabloevagto:參考看看 11/21 23:29
bernachom:我之前的做法是,先用vector存下數字,再去做排序 11/21 23:29
diabloevagto:你在要排序之前就先複製一份,這樣跟要經過運算 11/21 23:30
bernachom:就可以知道位置了 11/21 23:30
diabloevagto:有什麼關係... 11/21 23:30
azureblaze:stable的可以確保相同的值sort後順序會一樣 11/21 23:40
diabloevagto:我說的就是樓上那個xdd stl有提供 11/21 23:44
azureblaze:stl的似乎是stable_sort 11/21 23:46
poyenc:會有這種需求, 通常是沒做到 「Preserve Whole Object」 11/21 23:46
diabloevagto:沒錯 11/21 23:47
poyenc:http://codepad.org/ySUDSsv9 11/22 00:12
tropical72:http://codepad.org/rKYgmCyi ?? 11/22 00:51
bigpigbigpig:把原始陣列的值和位置綁在一起,然後 overload 小於 11/22 08:55
bigpigbigpig:運算子,再呼叫sort()即可,原來的位置仍然保留下來 11/22 08:56
CrBoy:我的作法是另外存位置(index) 然後針對位置(index)去排序 11/22 18:12
poyenc:囧rz ... 直接被忽略 11/23 12:49
tropical72:p 大的我沒辦法跑耶 Orz http://ppt.cc/qflZ 11/23 16:31