直接使用c++的sort函式獲取的僅僅是資料的排列結果,當我們想要對應序號的排序結果呢?
獲取資料對應序號的排序結果的思路是:首先產生序號陣列,然後在排序時排列序號陣列,判斷的是序號對應的資料大小。**如下
1 vector vdata(10); //
資料2 vector vindex(10); //
序號3 iota(vdata.begin(),vdata.end(),0); //
遞增賦值
4 iota(vindex.begin(),vindex.end(),0);//
遞增賦值
5 random_shuffle(vdata.begin(),vdata.end());//
打亂資料
6for(auto data:vdata)
7 cout<8sort(vindex.begin(),vindex.end(),
9 [&vdata](int a,int b));//
此處對資料判斷,然後對序號排列
10for(auto index:vindex)
11 cout《輸出結果為:
4,3,7,8,0,5,2,1,6,9,
9,8,7,6,5,4,3,2,1,0,
陣列排序,返回陣列值在原陣列中的下標(序號)
功能 對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標 序號 比如 1 7 3 2 9 返回 0 3 2 1 4 思想 在函式中動態開闢乙個陣列,用於儲存下標。初始化的時候為0 n 1 陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣列的指標。include include ...
C 陣列排序
c 陣列排序 2007 03 28 09 31 using system namespace datastruct 插入排序法 public static void insertionsort int list list j t 選擇排序法 public static void selections...
陣列排序並找出元素索引
題目描述 先給陣列排序,然後找到指定的值在陣列的位置,最後返回位置對應的索引。舉例 where 1,2,3,4 1.5 應該返回 1。因為1.5插入到陣列 1,2,3,4 後變成 1,1.5,2,3,4 而1.5對應的索引值就是1。同理,where 20,3,5 19 應該返回 2。因為陣列會先排序...