[問題] 使用C++的sort 排完大小後, 原先的位置?!

看板C_and_CPP作者 (殺手)時間14年前 (2011/11/21 22:46), 編輯推噓3(3023)
留言26則, 10人參與, 最新討論串1/1
想請問有一個陣列 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

11/21 22:49, , 1F
先把2個位置存起來or排序到別的陣列
11/21 22:49, 1F

11/21 22:56, , 2F
把int改成一個struct XD
11/21 22:56, 2F

11/21 23:07, , 3F
數字不重複?
11/21 23:07, 3F
※ 編輯: ieck 來自: 140.116.96.182 (11/21 23:17)

11/21 23:18, , 4F
D大 假設2的數字 是要經過運算才得知 就無法事先存起來了?!
11/21 23:18, 4F

11/21 23:19, , 5F
p大 數字可能會有重複~!!!
11/21 23:19, 5F

11/21 23:25, , 6F
數字有重複 會變得很麻煩 有1或多個解
11/21 23:25, 6F

11/21 23:28, , 7F
把int改成structure 順便儲存原本位置(炸
11/21 23:28, 7F

11/21 23:29, , 8F
有一個排序是同一個數字,不會改變相對位置的,可以
11/21 23:29, 8F

11/21 23:29, , 9F
參考看看
11/21 23:29, 9F

11/21 23:29, , 10F
我之前的做法是,先用vector存下數字,再去做排序
11/21 23:29, 10F

11/21 23:30, , 11F
你在要排序之前就先複製一份,這樣跟要經過運算
11/21 23:30, 11F

11/21 23:30, , 12F
就可以知道位置了
11/21 23:30, 12F

11/21 23:30, , 13F
有什麼關係...
11/21 23:30, 13F

11/21 23:40, , 15F
stable的可以確保相同的值sort後順序會一樣
11/21 23:40, 15F

11/21 23:44, , 16F
我說的就是樓上那個xdd stl有提供
11/21 23:44, 16F

11/21 23:46, , 17F
stl的似乎是stable_sort
11/21 23:46, 17F

11/21 23:46, , 18F
會有這種需求, 通常是沒做到 「Preserve Whole Object」
11/21 23:46, 18F

11/21 23:47, , 19F
沒錯
11/21 23:47, 19F

11/22 00:12, , 20F

11/22 00:51, , 21F
11/22 00:51, 21F

11/22 08:55, , 22F
把原始陣列的值和位置綁在一起,然後 overload 小於
11/22 08:55, 22F

11/22 08:56, , 23F
運算子,再呼叫sort()即可,原來的位置仍然保留下來
11/22 08:56, 23F

11/22 18:12, , 24F
我的作法是另外存位置(index) 然後針對位置(index)去排序
11/22 18:12, 24F

11/23 12:49, , 25F
囧rz ... 直接被忽略
11/23 12:49, 25F

11/23 16:31, , 26F
p 大的我沒辦法跑耶 Orz http://ppt.cc/qflZ
11/23 16:31, 26F
文章代碼(AID): #1EocGihD (C_and_CPP)