2013-11-29 6 views
0

Мне нужно отсортировать массив строк на основе массива int.Сортировка строкового массива на основе массива int без Array.Sort

У меня есть это упорядочить целочисленный массив

for (int pass = 0; pass < score.Length - ONE; pass++) 
    { 
     for (int index = 0; index < score.Length - ONE; index++) 
     { 
      if (score[index] > score[index + ONE]) 
      { 
       int temp = score[index]; 
       score[index] = score[index + ONE]; 
       score[index + 1] = temp; 
      } 
     } 
    } 

Это INT и имя массива были получены

Console.Write("Enter in a name and score: ", i); 
userInput = Console.ReadLine(); 
if (userInput != "") 
{ 
    parsedInput = userInput.Split(); 
    name[i] = parsedInput[ZERO]; 
    score[i] = int.Parse(parsedInput[ONE]); 
} 

Для моего назначения мне нужно, чтобы отобразить имя и их оценки, организованной самым высоким Гол.

Я знаю, что могу использовать Array.Sort (оценка, имя), чтобы достичь этого, но задание требует от меня не использовать какие-либо встроенные алгоритмы сортировки в библиотеке .net, которая предполагает, что Array.Sort будет.

Любые советы или помощь были бы весьма полезны.

+0

Действительно ли вы создали константу для 0 и 1? Могут ли они измениться в будущем и станут 'const int ZERO = 1; const int ONE = 0'? –

+0

Да, ZERO и ONE являются константами – user2781666

+0

@ user2781666, * почему? * –

ответ

1

При сортировке score вам необходимо перестроить name, чтобы они были согласованы.

for (int pass = 0; pass < score.Length - ONE; pass++) 
{ 
    for (int index = 0; index < score.Length - ONE; index++) 
    { 
     if (score[index] > score[index + ONE]) 
     { 
      int temp = score[index]; 
      score[index] = score[index + ONE]; 
      score[index + 1] = temp; 

      string temp2 = name[index]; 
      name[index] = name[index + ONE]; 
      name[index + 1] = temp2; 
     } 
    } 
} 
+0

Удивительно, что отлично работает. Я не думал, что это будет так просто. – user2781666

+0

Если этот ответ помог вам, вы можете принять ответ с галочкой, чтобы указать, что вам больше не нужна помощь в этом вопросе. – Justin

0

Когда вы меняете элементы массива int, также меняйте соответствующие элементы в массиве строк. Таким образом, значения следуют друг за другом, а имя и оценка остаются в синхронизации.

Обратите внимание, что алгоритм сортировки - это неэффективная версия сортировки пузырьков. Если во время выполнения внутреннего цикла нет свопов, массив сортируется, и вы можете выйти из внешнего цикла.

Смежные вопросы