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

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

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

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

05.07.2014, 14:52. Просмотров 302. Ответов 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++
Не могу понять как живут файловые указатели... Есть у меня файл, и пишу в него 100 интов. Указатель ввода сдвигается на 400, так и надо....

"динамически выделяет массив указателей на базовый класс" - как это понять? - C++
Что значит вообще массив на класс? Я не совсем понимаю, мы ведь оперируем понятием объекта, а класс - это всего лишь тип. Нам нужно создать...

Разобрать пузырьковую сортировку - C++
Т.к. я новичок в программировании, прошу помочь мне разобраться в исходном коде программы (написать подробные комментарии) или объяснить...

Про пузырьковую сортировку - C++
Вопрос: 1). если у нас дан массив 51428, то сколько проходов i совершено? (по моим подсчётам 4, т.к. массив из 5-ти чисел) void...

Заменить пузырьковую сортировка на сортировку Шелла - C++
Есть работающая сортировка пузырьковая, через потоки реализована, задача в том что бы вместо пузырьковой была сортировка Шелла, никак пока...

Какой из приведенных кодов реализует Пузырьковую сортировку? - C++
Есть такой цикл сортировки for (i=0;i&lt;n-1;i++) for (j=0;j&lt;n-i-1;j++) if (A&gt;A){ X=A; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2419 / 1113 / 240
Регистрация: 30.11.2013
Сообщений: 3,657
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
Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2014, 15:56     Как понять "пузырьковую" сортировку?
Еще ссылки по теме:

Реализовать сортировку массива структур типа "Сотрудник" по убыванию стажа - C++
Здравствуйте, уважаемые форумчане! Задача: Информация о сотрудниках предприятия содержит ФИО, номер отдела, должность, дату начала...

в чем ошибка? задача на "сортировку массива" - C++
Подскажите в чем ошибка в коде. Я должен отсортировать массив по убыванию элементов. #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Переделать рекурсивную сортировку "пузырьком" на итеративную - C++
Нужно код переделать сортировку Пузырьком переделать рекурсувную на сортировку циклами. { if(i&lt;=0) return; ...

Нужно в пункт просмотра добавить еще одну "ветку" которая будет отвечать за сортировку - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class myclass { public: char fio; char nom; char data; ...

Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив обработанный на экран - C++
Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив обработанный на экран.

Добрый день , не могу понять почему не работает system("clr")? - C++
#include&lt;iostream&gt; #include&lt;string&gt; // getline #include&lt;cstdlib&gt; // system using namespace std; void main() { int a ; char d;...


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

Или воспользуйтесь поиском по форуму:
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