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,

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM