你好,游客 登录 注册 搜索
背景:
阅读新闻

C++数组排序怎么返回数值在原数组中的下标

[日期:2016-11-26] 来源:Linux社区  作者:Linux [字体: ]

数组排序返回数值在原数组中的下标在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;
}

程序输出为:

C++数组排序怎么返回数值在原数组中的下标

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-11/137568.htm

linux
相关资讯       C++数组  C++数组排序 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款