我有一系列结构。我们称之为structsarray
我有一系列的整数,其中整数是结构的索引。让我们称之为indexarray
我想对indexarray
进行排序,但我想将排序与int
structsarray
进行比较
使用该设置可以做任何方式吗?
答案 0 :(得分: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指针,然后取消引用该指针以获取实际值。
答案 1 :(得分:2)
您可以通过实现自己的比较功能来使用qsort。这里解释说:http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/
答案 2 :(得分: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;
}
}
}