這是基本問題:我有一個可能具有重複元素的整數數組。我需要知道每個元素的索引,但是當我對數組進行排序時,無論何時從新數組中選擇一個元素,我都希望能夠引用原始數組中的相同元素。在排序前後對具有重複元素的數組進行索引
我正在尋找解決方案,或者我正在採取的方法的解決方案。
這裏是一個數組
a = [1, 2, 3, 4, 3, 5, 2]
有兩個2的和兩個3的,但如果我與第一2
(左一),我想與指數1工作,如果工作我「M與第二2
工作,我想與指數6來工作,所以我使用一個輔助陣列中,讓我做這件事:
helper = [0, 1, 2, 3, 4, 5, 6]
,我將在迭代,並使用從a
訪問每個元素。
我本來可以用each_with_index
來完成這個,但是當我排序數組時,問題就開始了。
現在我有一個排序順序
sort_order = [2, 4, 1, 5, 3]
我用sort_by
按照排序順序進行排序a
,生產
sorted_a = [2, 2, 4, 1, 5, 3, 3]
你可以假設輸入的所有元素在sort_order
存在,以避免sort_by
例外。
現在的問題是我的helper
陣列應該更新以匹配新的位置。每個元素的排序方式與a
進行排序的方式相同,因爲尚不清楚新數組中的前兩個元素是否位於索引1或原始數組的索引6處。
所以我的新助手陣列可能看起來像
new_helper = [1, 6, 3, 0, 5, 2, 4]
所以,如果我去這種方法,我將如何產生new_helper
陣列,給出原始數組和排序順序?
也許有更好的方法來做到這一點?
只要該元素的值相同,輔助數組是否指向與原始元素不同的元素,這有什麼關係? – 2012-07-25 18:46:43
這些值並不重要(在我使用它們的方法的上下文中),但是位置是。這就是我創建我的幫助程序數組時所想到的,所以新的幫助程序數組應該指向相同的元素。 – MxyL 2012-07-25 19:11:16
然後,您需要自己實現排序邏輯,並且每當您交換數組中的某個位置時,也將它交換到您的幫助程序數組中。 – 2012-07-25 19:13:49