设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 44|回复: 0

对数组排序后,获取排序前元素索引

[复制链接]
  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

    发表于 2021-5-22 16:23 | 显示全部楼层 |阅读模式
    对数组排序后,获取排序前元素索引
    写在前面
    最近基本都在弄实验室的事情,自己设计了两个算法,有大把的数据需要跑,大把的模型需要渲染。。。
    在设计的算法中,有一个需求是,对一个double数组OriArray进行排序,排序之后记为SortedArray,现在需要获取SortedArray数组中的每个元素在原始数组OriArray中的索引。
    这个需求如果在OC中实现的话蛮简单的,把<原索引,数组元素>作为键值对放入某个字典,按照数组元素对字典进行排序,然后要获取排序后的数组在原始情况下的索引,只需直接访问其key就可以了。但是C++中没有直接的这样的数据结构,因此我们可以自己构造一个。

    代码实现
    按照上文中的思路,构造一个<原索引,数组元素>的数据结构,如下
    1. 代码实现
    2. 按照上文中的思路,构造一个<原索引,数组元素>的数据结构,如下

    3. struct node
    4. {
    5.     double data;
    6.     int No;
    7. };
    8. 排序我们直接使用系统中自带的快排算法。其函数原型如下

    9. qsort(array, num_of_data_in_array,sizeof(array[0]),comp)
    10. 其中第一个参数为数组名,第二个参数为数组中元素个数,第三个参数为数组中元素的sizeof,第四个元素为排序方式。在我们的需求中,需要排序的是一个结构体,我们需要按照结构体node中data的大小进行升序排序,其比较函数comp定义如下

    11. int comp(const void *a, const void *b)
    12. {
    13.     return (*(struct node *)a).data> (*(struct node *)b).data?1:-1;
    14. }
    15. 函数原型中的函数参数是两个void类型的指针,在函数体中,需要做指针类型转换,然后按照data升序排序。
    16. 测试代码如下

    17. int main()
    18. {
    19.     double a[] = {3.0, 4.0, 2.5,1.1, 5.6};
    20.     int n = sizeof(a)/sizeof(double);
    21.     struct node arry[sizeof(a)/sizeof(double)];
    22.     int i;
    23.     for(i = 0; i < n;++i)
    24.     {
    25.         arry[i].data = a[i];
    26.         arry[i].No = i;
    27.     }
    28.     qsort(arry,n,sizeof(struct node),comp);
    29.    
    30.     for ( i = 0; i < n; i++)
    31.     {
    32.         arry[i].data = a[i];
    33.         arry[i].No = i;
    34.     }
    35.     qsort(arry, n, sizeof(struct node), comp);
    36.     printf("(当前值,原索引)\n");
    37.     for(i = 0; i < n;++i)
    38.     {
    39.         cout<<arry[i].data<<"\t"<<a[i]<<"\t"<<arry[i].No<<endl;
    40.     }

    41.     system("pause");
    42.     return 0;
    43. }
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛