Не работает сортировка в приведенном коде - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. У меня такая проблемка. Не работает сортировка... Вот часть кода сортировки, скажите, в чем ошибка
void sortb(int razm){
    double temp;
int i, j, poz;
for(i=0; i<razm; ++i);
{
poz=i;
temp=masA[i].Ocen;
printf("zopominaet ocen - %f\n", temp);
for(j=i+1; j<razm; ++j)
{
    if(masA[j].Ocen<temp)
    {poz=j;
    temp=masA[j].Ocen;}
}
masA[poz].Ocen=masA[i].Ocen;
masA[i].Ocen=temp;
printf("teper - %f\n", temp);
}
}

Решение задачи: «Не работает сортировка в приведенном коде»

textual
Листинг программы
  ...
  double temp;
  ...
  for ( i = 0; i < N-1; i ++ ) // достаточно поставить N-1 элементов
    for ( j = N-2; j >= i; j -- ) // идем с конца массива в начало 
      if ( A[j].ocen > A[j+1].ocen ) // если они стоят неправильно, ...
      {
        temp = A[j].ocen; 
        A[j].ocen = A[j+1].ocen; // переставить A[j] и A[j+1]
        A[j+1].ocen = temp;
      }
  ...

Объяснение кода листинга программы

  1. Задается температура, которая, как предполагается, не влияет на работу алгоритма сортировки.
  2. В первой части кода инициализируется массив A, который содержит N элементов. Каждый элемент массива A имеет структуру, которая включает в себя имя ocen и значение, представляющее собой оценку.
  3. Во второй части кода начинается сортировка массива A методом сортировки пузырьком.
  4. Первый цикл идет по массиву A от начала до N-2 элемента.
  5. Второй цикл идет по массиву A от N-2 до i элемента, начиная с конца массива.
  6. Если элементы A[j] и A[j+1] находятся в неправильном порядке (A[j].ocen > A[j+1].ocen), то они меняются местами с помощью временной переменной temp.
  7. Циклы завершаются, когда первый цикл достигает конца массива A или когда второй цикл достигает i элемента.
  8. В конце сортировки массив A отсортирован по возрастанию оценок.
  9. Температура сбрасывается до комнатной.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы