为什么sort函数不对结构进行排序

  • 本文关键字:结构 排序 sort 函数 c
  • 更新时间 :
  • 英文 :


我有下面的pair结构,它包含两个变量:

typedef struct
{
int winner;
int loser;
}
pair;

我试图根据相同长度的数组pair_strength对它们进行排序。然而,尽管排序函数看起来很好,但pair结构的排序根本没有改变。以下是排序功能:

int pair_strength[] = {1, 5, 2, 4, 3};
void sort_pairs(void)
{
// bubble sort
for (int i = 0; i < pair_count-1; i++)
{
for (int j = 0; j < pair_count-i-1; j++)
{
if (pair_strength[j] < pair_strength[j+1])
{
int temp_w = pairs[j].winner;
int temp_l = pairs[j].loser;
pairs[j].winner = pairs[j+1].winner;
pairs[j].loser = pairs[j+1].loser;
pairs[j+1].winner = temp_w;
pairs[j+1].loser = temp_l;
}
}
}
}

因此,假设5是pair_strength中的第二个元素,并且是最大的数字,我想将pair结构中两个变量(winnerloser(中的第三个元素移动到第一个,依此类推

感谢大家的帮助。以下是更新的功能:

void sort_pairs(void)
{
// bubble sort
for (int i = 0; i < pair_count-1; i++)
{
for (int j = 0; j < pair_count-i-1; j++)
{
if (pair_strength[j] < pair_strength[j+1])
{
pair t = pairs[j];
pairs[j] = pairs[j+1];
pairs[j+1] = t;
int t2 = pair_strength[j];
pair_strength[j] = pair_strength[j+1];
pair_strength[j+1] = t2;
}
}
}
}

最新更新