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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gulich
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 6
#1

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

05.07.2014, 14:52. Просмотров 293. Ответов 5
Метки нет (Все метки)

Здравствуйте , в книге по теме "массивы" в пример была дана программа "пузырьковой" сортировки массивов:
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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2014, 14:52     Как понять "пузырьковую" сортировку?
Посмотрите здесь:

Про пузырьковую сортировку C++
в чем ошибка? задача на "сортировку массива" C++
Разобрать пузырьковую сортировку C++
Переделать рекурсивную сортировку "пузырьком" на итеративную C++
C++ Заменить пузырьковую сортировка на сортировку Шелла
C++ Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив обработанный на экран
Нужно в пункт просмотра добавить еще одну "ветку" которая будет отвечать за сортировку C++
C++ Какой из приведенных кодов реализует Пузырьковую сортировку?
"динамически выделяет массив указателей на базовый класс" - как это понять? C++
C++ Не могу понять, как "живут" файловые указатели
Добрый день , не могу понять почему не работает system("clr")? C++
C++ Реализовать сортировку массива структур типа "Сотрудник" по убыванию стажа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2379 / 1073 / 235
Регистрация: 30.11.2013
Сообщений: 3,560
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     Как понять "пузырьковую" сортировку?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru