按升序打印阵列旨在下降

Printing arrays in ascending order meant to descend

本文关键字:阵列 升序 打印      更新时间:2023-10-16

我正在尝试打印一个球员,他们的分数从最高分数到最低。我可以将其下降,但与正确的播放器名称无关。

使用以下代码:

void showPlayers() {
int desc;
for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (scores[i] < scores[j]) {    //flipping comparison operator descends data, 
                                        //but either increments/decrements each player's 
                                        //score
            desc = scores[i];
            scores[i] = scores[j];
            scores[j] = desc;
        }
    }
}
for (int i = 1; i < pointer; i++) {
    cout << playerNames[i] << "t" << scores[i] << "n";
}
cout << endl;
}

我收到的输出类似:

Player1    20
Player2    30
Player3    40

for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (scores[i] > scores[j]) {
            swap(scores[i], scores[j]); 
        }
    }
}
for (int i = 0; i < pointer; i++) {
    for (int j = 0; j < pointer; j++) {
        if (playerNames[i] > playerNames[j]) {
            swap(playerNames[i], playerNames[j]);
        }
    }
}
for (int i = 0; i < pointer; i++) {
    cout << playerNames[i] << "t" << scores[i] << "n";
}

if语句中使用此信息:

std::swap(scores[i], scores[j]);
std::swap(playerNames[i], playerNames[j]);

交换得分时,您不会交换相应的playerNames。另外,如果您使用std::swap