求高手帮忙,c++数组排序后怎么输出原先编号

来源:百度知道 编辑:UC知道 时间:2024/05/08 13:43:12
输入一串数组如:56 12 1 99 1000 234 33 55 99 812,进行从小到大排序
然后怎么输出排序后那个数的原先的编号即:3 2 7 8 1 4 9 6 10 5

1.你把数组的下标也保存到一个结构体数组中,对原数组进行排序的同时,也对那个临时数组进行同样的调换,等目标数组排序好,你的下标数组自然也排好了。


2.例如:

struct
{
int data;
size_t index;
};
排序后的index依然不变。参考代码:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <cstdlib>
using namespace std;
struct element{
int data;
size_t index;
}array[10];
int compare(const void *a, const void *b)
{
return (*(const element*)a).data > (*(const element*)b).data;
}
int main()
{
int input[] = {56, 12, 1, 99, 1000, 234, 33, 55, 99, 812};
for (size_t i = 0; i <&n