如何排序一个数组,得到新数组,并得到新数组每个元素在原数组的下标?
假如一个数组a[6]={1,1,4,2,3,2,1};用一种排序方法(最好用堆排序或归并排序等复杂度低一些的方法,因为实际的数组a很大)得到一个新的排序后的数组b[6]={1,1,1,2,2,3,4};有什么办法知道b数组中的元素在a数组中下标的位置?
[解决办法]
#include <iostream>#include <algorithm>using namespace std;struct node{ int num; int index;}r[100];bool cmp(node x, node y){ return x.num < y.num ? true:false;}int main(){ int a[]={1, 1, 4, 2, 3, 2, 1}; int n = sizeof(a)/sizeof(int); for (int i=0; i < n; ++i) { r[i].num = a[i]; r[i].index = i; } sort(r, r + n, cmp); return 0;}