C++ 数组排序并获取数组对应序号的排序结果

直接使用C++的sort函数获取的仅仅是数据的排列结果,当我们想要对应序号的排序结果呢?

 

获取数据对应序号的排序结果的思路是:首先产生序号数组,然后在排序时排列序号数组,判断的是序号对应的数据大小。代码如下

 

 1   vector<int> vData(10);  //数据
 2     vector<int> vIndex(10); //序号
 3     iota(vData.begin(),vData.end(),0);  //递增赋值
 4     iota(vIndex.begin(),vIndex.end(),0);//递增赋值
 5     random_shuffle(vData.begin(),vData.end());//打乱数据
 6     for(auto data:vData) { cout<<data<<","; }
 7     cout<<endl;
 8     sort(vIndex.begin(),vIndex.end(),
 9          [&vData](int a,int b){ return vData[a]>vData[b]; });//此处对数据判断,然后对序号排列
10     for(auto index:vIndex) { cout<<vData[index]<<","; }
11     cout<<endl;

 

输出结果为:

4,3,7,8,0,5,2,1,6,9,

9,8,7,6,5,4,3,2,1,0,

 

posted @ 2020-07-07 16:53  永驻的青春  阅读(3764)  评论(0)    收藏  举报