【发布时间】:2024-01-09 10:25:02
【问题描述】:
我正在尝试执行选择排序,其中我按得分最多的目标进行排序。我有3个类别;目标,助攻,名字。我可以按目标正确排序,并在排序后将球员的目标和助攻保持在正确的位置,但是当我尝试在排序后将名称移动到正确的位置时,它只会移动名称的第一个字母。这是我的代码。感谢您的帮助!
void sortPlayersByGoals(int* goals, int* assists, char** names, int size)
{
int lh, rh, i, tempG, tempA, tempN;
for(lh = 0; lh < size; lh++)
{
rh = lh;
for(i = lh; i < size; i++)
{
if(goals[i] > goals[rh])
{
rh = i;
}
tempG = goals[lh];
tempA = assists[lh];
tempN = *names[lh];
goals[lh] = goals[rh];
*names[lh] = *names[rh];
assists[lh] = assists[rh];
goals[rh] = tempG;
*names[rh] = tempN;
assists[rh] = tempA;
}
}
}
如果这有助于显示我的问题,这是我的输出..
Pre-Sort
Name Goals Assists
Redden 2 0
Berglund 5 2
Jackman 2 0
Stewart 4 0
Oshie 3 5
McDonald 2 4
Pietrangelo 2 7
Perron 2 6
Tarasenko 5 5
Post-Sort
Name Goals Assists
Tedden 5 5
Berglund 5 2
Sackman 4 0
Otewart 3 5
Rshie 2 0
McDonald 2 4
Pietrangelo 2 7
Perron 2 6
Jarasenko 2 0
【问题讨论】:
标签: c string sorting pointers selection