-2

我有一个结构数组。让我们称之为structsarray

我有一个整数数组,其中整数是结构的索引。让我们称之为indexarray

我想排序indexarray,但我想将排序与intin进行比较structsarray

有什么方法可以通过该设置完成?

4

3 回答 3

3

您有一个比较功能,例如:

int my_compare(const void *a, const void *b)
{
    int index1 = *((const int *) a);
    int indexb = *((const int *) b);

    return structsarray[index1].field - structsarray[index2].field;
}

参数是指向要排序的数组中的值的指针。我将常量 void 指针转换为常量 int 指针,然后取消引用该指针以获取实际值。

于 2012-11-23T13:03:27.767 回答
2

您可以通过实现自己的比较功能来使用 qsort。这里解释一下:http ://www.cplusplus.com/reference/clibrary/cstdlib/qsort/

于 2012-11-23T13:03:08.823 回答
0

提供的信息非常有限。可能您可以执行以下操作:

算法示例:冒泡排序:

  for (c = 0 ; c < ( n - 1 ); c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (index[d] > index[d+1]) /* For decreasing order use < */
      {

        /* Sort index */
        swap       = index[d];
        index[d]   = index[d+1];
        index[d+1] = swap;

        /* Sort struct using above index */
        swap       = struct[d];
        struct[d]   = struct[d+1];
        struct[d+1] = swap;

      }
    }
  }
于 2012-11-23T13:09:43.340 回答