C 陣列排序並獲取陣列對應序號的排序結果

2022-07-15 19:39:07 字數 652 閱讀 6918

直接使用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。因為陣列會先排序...