Форум программистов, компьютерный форум CyberForum.ru

Как понять "пузырьковую" сортировку? - C++

Восстановить пароль Регистрация
 
Gulich
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 6
05.07.2014, 14:52     Как понять "пузырьковую" сортировку? #1
Здравствуйте , в книге по теме "массивы" в пример была дана программа "пузырьковой" сортировки массивов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main()
{
    int nums[10];
    int a,b,t;
    int size;
    size=10;
    setlocale(LC_ALL, "RUS");
    for(t=0;t<size;t++) nums[t]=rand();
    cout << "Исходный массив: ";
    for(t=0; t<size;t++) cout << nums[t] << ' ';
    cout << '\n';
    
    for(a=1; a<size; a++)
        for(b=size-1; b>=a; b--) {
            if (nums[b-1] > nums[b]) {
                t = nums[b-1];
                nums[b-1] = nums [b];
                nums[b]=t;
            }
        }
cout << "Отсортированный массив: ";
for(t=0;t<size;t++)
    cout << nums[t] << ' ';
_getch();
return 0;
Не понимаю последнюю половину программы:
C++
1
2
3
4
5
6
7
8
9
10
11
for(a=1; a<size; a++)
        for(b=size-1; b>=a; b--) {
            if (nums[b-1] > nums[b]) {
                t = nums[b-1];
                nums[b-1] = nums [b];
                nums[b]=t;
            }
        }
cout << "Отсортированный массив: ";
for(t=0;t<size;t++)
    cout << nums[t] << ' ';
Прошу разъяснить новичку как это работает.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,223
05.07.2014, 14:58     Как понять "пузырьковую" сортировку? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Изи. Сортировка "пузырьковая" поскольку:
"лёгкие" элементы встают левее к краю, меняясь с правым соседом если тот "тяжелее"
C++
1
2
3
4
5
6
7
if (nums[b-1] > nums[b]) // если элемент слева больше чем тот, что справа. 
 {
t = nums[b-1]; // поменять их местамии - сперва запоминаем один из элементов
nums[b-1] = nums [b]; // сразу перезаписываем его тем элементом, что по условию "легче" пузырёк
nums[b]=t // и поскольку мы предварительно сохранили знач того, что перезаписали в временную переменную - поменяли элементы местами.
}
;

Пример результата 1 прохода цикла
Gulich
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 6
05.07.2014, 15:48  [ТС]     Как понять "пузырьковую" сортировку? #3
Какие значения принимает t переменная в этой части программы?
rutelun
147 / 73 / 15
Регистрация: 31.05.2014
Сообщений: 215
05.07.2014, 15:54     Как понять "пузырьковую" сортировку? #4
Gulich, Переменная t нужна, для того чтобы поменять местами два элемента.
Gulich
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 6
05.07.2014, 15:56  [ТС]     Как понять "пузырьковую" сортировку? #5
Спасибо.
rutelun
147 / 73 / 15
Регистрация: 31.05.2014
Сообщений: 215
05.07.2014, 15:56     Как понять "пузырьковую" сортировку? #6
Есть две переменных a и b. Вы хотите поменять их местами.Для начала сохраняете значение a где-то еще (к примеру в t) и присваиваете a значение b. Потом присваиваете b сохраненное значение
Yandex
Объявления
05.07.2014, 15:56     Как понять "пузырьковую" сортировку?
Ответ Создать тему
Опции темы

Текущее время: 02:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru