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