我正在處理一個項目,我需要從最小到最大排序數組,但保存了索引的值。例如,對於數組{2,7,8,1,3},排序的索引將是{3,0,4,1,2}。我認爲我可以使用一個二維數組來完成這個任務;我會將索引添加到每個組件,對數組進行排序,然後從第二個元素中檢索原始索引。它並沒有爲我工作,雖然我希望儘管如此,我有我現在的代碼下面,它不斷給我一個分段錯誤。我不知道我做錯了什麼,但我假設它在我的循環中。使用多維數組跟蹤C++中的索引
#include <iostream>
#include <algorithm>
using namespace std;
const int SIZE = 7;
int main()
{
int intArray[SIZE] = {5, 3, 32, -1, 1, 104, 53};
int i, j, k, l = 0;
int temp[SIZE][2];
//fills multidimensional array temp with data from intArray or index #
for(i = 0; i < 7; i++){
for(j = 0; j < 2; j++){
switch (j)
{
case '0':
temp[i][j] = *intArray;
break;
case '1':
temp[i][j] = i;
break;
}
}
}
sort(intArray, intArray + SIZE);
//prints each component of temp individually
cout << "Sorted Array looks like this." << endl;
for (k = 0; i < 7; i++){
for (l = 0; j < 2; i++){
cout << &temp[k][l] << endl;
}
}
return 0;
}
取決於你需要如何保持你的數據的跟蹤鏈接......我會用'的std :: pair'的'的std :: VECTOR' ('std :: vector>'),其中對中的第一個值是數組值,第二個值是數組索引。使用它,你應該能夠使用STL排序算法來排序你的矢量,並且你已經完成了。 –
RyanP
下面是我使用你的代碼提到的一個例子:http://ideone.com/hQZ7zk – RyanP