Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Алгоритм пузырьковой сортировки


Автор: hoz 5.3.2014, 21:12
 Вот пример алгоритма пузырьковой сортировки элементов массива:
Код

for (a=1; a<size; a++)
{
   for (b=size-1; b>=a; b--)
   {
      if (nums[b-1 > nums[b])
      {
         t = numb[b-1];
         nums[b-1] = nums[b];
         nums[b] = t;
      }
   }
}

По сути, сразу бросается в глаза первый цикл:
Код

for (a=1; a<size; a++)

Почему первый сортируемый элемент не 0-го индекса, а 1-ого? Получается что сортироваться будет на 1 элемент меньше. А это уже погрешность...

Автор: bsa 5.3.2014, 22:01
потому что в ходит до a включительно. А nums индексируется по b-1. Таким образом получается минимальный индекс 0.

Автор: hoz 5.3.2014, 22:38
Цитата(bsa @  5.3.2014,  22:01 Найти цитируемый пост)
потому что в ходит до a включительно. А nums индексируется по b-1. Таким образом получается минимальный индекс 0.

Я понял, что причина кроется в том, что nums индексируется по b-1. Но изначально, странно. Ведь массивы обычно всегда от нулевого прогоняются, а тут от первого. По сути, как я понимаю, тут можно логику переписать, чтоб код был более привычный. А когда он писался, видимо это было нормальным вариантом.

Автор: bsa 5.3.2014, 23:23
hoz, переписать можно. в этом случае надо заменить b-1 на b и b на b+1 и начинать b от size-2

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)