【问题标题】:Use qsort to sort two arrays according to one? [duplicate]使用 qsort 根据一个对两个数组进行排序? [复制]
【发布时间】:2015-06-21 15:08:46
【问题描述】:

如果我有一个数组 A 和一个数组 B,有没有办法使用 qsort() 对数组 A 进行排序,同时根据 A 的元素对 B 的所有元素进行排序?例如,如果 A = { 4, 3 ,2, 1} 和 B = {1, 2, 3, 4},那么排序后它们是这样的:

A = {1, 2, 3, 4} 和 B = {4, 3, 2, 1}

【问题讨论】:

    标签: c arrays sorting quicksort qsort


    【解决方案1】:

    假设问题不是duplicate,我猜你想根据它在A中排序的顺序对B进行排序。我假设A在再次排序之前已经排序。您必须提供这是否确实是一个有效的假设。

    一个非常简单的解决方案可能是识别 A 中的顺序,如果 i>j 和 A[i] > A[j],你可以选择两个索引 i,j,你可以说它是升序的,否则是降序的。

    然后,使用它来定义要在 B 中使用的比较函数。

    int compare (const void * a, const void * b)
    {
      return ( *(int*)a - *(int*)b );
    }
    
    
    qsort (B, sizeof(B)/sizeof(int), sizeof(int), compare);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多