并排排序字符串数组和Int数组

时间:2015-11-29 21:11:02

标签: c++ arrays

希望你能提供帮助。我有另一个项目要做,我有点卡住了。对于这个项目,我们正在制作一个简单的Rock,Paper,Scissors游戏。除了所需的高分函数外,我几乎为此设置了所有内容。教授希望我们以最高分的顺序打印出前3名的高分。

我如何设置代码是因为我有2个独立的数组,即highscore []和highscoreNames []。我需要弄清楚如何将highscore []从最大值排序到最小值,同时保持highscoreNames []的名称与其得分保持一致。

感谢您的帮助,如果您需要更多信息,请致电!

3 个答案:

答案 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
}