Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм пузырьковой сортировки, Почему нет первого элемента массива? 
V
    Опции темы
hoz
Дата 5.3.2014, 21:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



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

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 элемент меньше. А это уже погрешность...
PM MAIL   Вверх
bsa
Дата 5.3.2014, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



потому что в ходит до a включительно. А nums индексируется по b-1. Таким образом получается минимальный индекс 0.
PM   Вверх
hoz
Дата 5.3.2014, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



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

Я понял, что причина кроется в том, что nums индексируется по b-1. Но изначально, странно. Ведь массивы обычно всегда от нулевого прогоняются, а тут от первого. По сути, как я понимаю, тут можно логику переписать, чтоб код был более привычный. А когда он писался, видимо это было нормальным вариантом.
PM MAIL   Вверх
bsa
Дата 5.3.2014, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



hoz, переписать можно. в этом случае надо заменить b-1 на b и b на b+1 и начинать b от size-2
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.