我有下面的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
结构中两个变量(winner
和loser
(中的第三个元素移动到第一个,依此类推
感谢大家的帮助。以下是更新的功能:
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;
}
}
}
}