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