Выбор сортировки установки неправильных значений в C - PullRequest
0 голосов
/ 13 февраля 2020

Новый программист здесь! Я реализую сортировку выбора с переменной max вместо обычного min, но я все еще хочу сортировать по убыванию. Приведенный ниже код прекрасно сортирует список, за исключением первого значения, которое составляет очень большое отрицательное число ... Какие-нибудь советы, что я могу исправить, чтобы правильно отсортировать список?

void selection(int Array[], int size) {
   int i, j, max, temp;
   for (i = 0; i < size-1; i++) {
     max = i;
       for (j = i+1; j <= size; j++) {
          if ( Array[j] < Array[max] )
             max = j;
       }
       temp = Array[max];
       Array[max] = Array[i];
       Array[i] = temp;
   }
}

Ответы [ 2 ]

5 голосов
/ 13 февраля 2020
for(j = i+1; j<=size; j++)

Эта линия - ваша проблема. Вы обращаетесь к одному за концом массива, который будет неопределенным поведением и может часто давать вам странные значения. Измените условие на j < size.

1 голос
/ 13 февраля 2020

В приведенных выше строках кода я вижу, что вы используете индексирование на основе 0 для массива, следовательно, когда вы ссылаетесь на Array [size] или Array [size + 1], это выдает значения мусора, вы должны заменить внутренний от oop до

for (j = i+1; j < size; j++) 
...