我如何设置代码是因为我有2个独立的数组,即highscore []和highscoreNames []。我需要弄清楚如何将highscore []从最大值排序到最小值,同时保持highscoreNames []的名称与其得分保持一致。
感谢您的帮助,如果您需要更多信息,请致电!
答案 0 :(得分:0)
最简单的方法是使用一个容器作为高分和高分名称:
<%@ Page Title="Add Your Title Right Here, Please" Language="C#" MasterPageFile="YOUR_MASTER_PAGE.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
这样您就可以在排序过程中将分数和名称保持在一起。
编辑1:
如果不允许使用结构,则需要编写自己的排序例程。在 score 数组中移动项目时,还会移动 names 数组的相同项目(相同索引)。
答案 1 :(得分:0)
结构是一种更好的方法。虽然只使用索引也可以提供帮助,对分数进行排序并在两个数组中进行交换:
for(i = 1; (i <= numLength); i++)
{
for (j=0; j < (numLength -1); j++)
{
if (highscore[j+1] > highscore[j])
{
int temp = highscore[j];
highscore[j] = highscore[j+1];
highscore[j+1] = temp;
string tempName = highscoreNames[j];
highscoreNames[j] = highscoreNames[j+1];
highscoreNames[j+1] = temp;
}
}
}
答案 2 :(得分:0)
您可以创建正式的配对数据结构,就像@Thomas建议的那样,或者您可以创建包含排序分数的indeces的第三个数组。这样您就不需要对数据阵列进行实际重新排序。例如,它可能是这样的:
highscore = {5, 2, 4, 1, 6};
highscoreNames = {"a", "b", "c", "d", "e"};
sortedIndeces = {4, 0, 2, 1, 3};
然后,您只需使用sortedIndeces
进行索引。
for (int i = 0; i < 5; i++) {
highscore[sortedIndeces[i]]; //6, 5, 4, 2, 1
highscoreNames[sortedIndeces[i]]; //e, a, c, b, d
}