首页 / 操作系统 / Linux / C++数组排序怎么返回数值在原数组中的下标
数组排序返回数值在原数组中的下标在matlab中根本就不是问题,一个sort函数解决:[B,IX] = sort(A,...)其中A为排序前的数组,B为排序后的数组,IX为排序后的下标。可在C++中就没有这么简单了,找遍了所有可能的函数,都没有发现能实现这个功能的。于是自己写一个,供大家参考。基本思路是:把数值(value)和下标(index)封装成一个结构体,当数值排序时,其下标也跟着跑。代码如下:#include
#include
using namespace std;struct node
{
int value;
int index;
};
bool cmp(struct node a, struct node b)
{
if(a.value < b.value)
{
return true;
}
return false;
}int main(){
node* a=new node[3];
a[0].index=0;
a[1].index=1;
a[2].index=2;
a[0].value=20;
a[1].value=10;
a[2].value=30;
sort(a,a+3,cmp);
for(int i=0;i<3;i++){
cout<<a[i].value<<" "<<a[i].index<<endl;
}
delete [] a;
return 0;
}程序输出为:本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137568.htm