直接使用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,