Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
#1

Пузырьковая сортировка - C++

13.10.2013, 14:36. Просмотров 475. Ответов 2
Метки нет (Все метки)

Здравствуйте .Объясните , пожалуйста , подробно , как работает пузырьковая сортировка .
Получается сравниваются два соседних элемента и если элемент с меньшим индексом больше другого элемента , то они переставляются местами . Я немного запутался с циклами .
Нашёл такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const int arraysize = 10;
int array[arraysize] = {7, 12, 100, 1, 78, 1234, 3, 18900, 512, 5021};
int hold;
//выводим на экран исходный неотсортированный массив 
for (int i = 0; i < arraysize; i++)
 
cout << array[i] << "; ";
cout << endl << endl;
 
for (int j = 1; j < arraysize; j++)
for (int k = 0; k < arraysize - 1; k++)
if (array[k] > array[k + 1])
  {hold = array[k];
   array[k] = array[k + 1];
   array[k + 1] = hold;
  }
Я не пойму принцип работы . Например , есть ряд чисел: 5,3,8,1
получается , что 5>3, а должно быть наоборот .Исходя из кода нужно сделать:hold=3 , 3=5,5=hold - вот это не понятно , какая суть того , что 5=hold?
Как работают цикли ? Почему в первом проходим от 1 ?Этот цикл для прохождения по всех элементах?
а что делается во втором ?

Помогите , пожалуйста , разобраться . Буду благодарен.

Добавлено через 12 минут
Цитата Сообщение от NNN7 Посмотреть сообщение
Здравствуйте .Объясните , пожалуйста , подробно , как работает пузырьковая сортировка .
Получается сравниваются два соседних элемента и если элемент с меньшим индексом больше другого элемента , то они переставляются местами . Я немного запутался с циклами .
Нашёл такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const int arraysize = 10;
int array[arraysize] = {7, 12, 100, 1, 78, 1234, 3, 18900, 512, 5021};
int hold;
//выводим на экран исходный неотсортированный массив 
for (int i = 0; i < arraysize; i++)
 
cout << array[i] << "; ";
cout << endl << endl;
 
for (int j = 1; j < arraysize; j++)
for (int k = 0; k < arraysize - 1; k++)
if (array[k] > array[k + 1])
  {hold = array[k];
   array[k] = array[k + 1];
   array[k + 1] = hold;
  }
Я не пойму принцип работы . Например , есть ряд чисел: 5,3,8,1
получается , что 5>3, а должно быть наоборот .Исходя из кода нужно сделать:hold=3 , 3=5,5=hold - вот это не понятно , какая суть того , что 5=hold?
Как работают цикли ? Почему в первом проходим от 1 ?Этот цикл для прохождения по всех элементах?
а что делается во втором ?

Помогите , пожалуйста , разобраться . Буду благодарен.
c перестановкой я уже разобрался , а вот с циклами ещё не совсем . объясните , пожалуйста вот эти записи :
C++
1
2
for (int j = 1; j < arraysize; j++) 
for (int k = 0; k < arraysize - 1; k++)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 14:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пузырьковая сортировка (C++):

Пузырьковая сортировка - C++
Помогите плз. Работаю в Visual Studio 2010. Написал алгоритм пузырьковой сортировки, но когда запускаю вместо одной из цифр выводится самое...

Пузырьковая сортировка - C++
Посмотрите что не так дана таблица стран с кол-вом золотых, серебряных медалей нудно отсортировать страны в порядке убывания количества...

Пузырьковая сортировка - C++
Написал программу сортировки методом пузырька: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; int...

Пузырьковая сортировка - C++
Хочу спросить, это пузырьковая сортировка или нет? Как её правильно реализовать? Как оценить эффективность алгоритма сортировки по числу...

Пузырьковая сортировка - C++
В чес дело не могу понять? Переменной массива с индексом X присваивается какое то левое значение. #include &lt;iostream&gt; #include...

пузырьковая сортировка - C++
Задача не сложная, но у меня нет времени ее решать: дан одномерный массив, нужно сделать пузырьковую сортировку по нему

2
Kuzia domovenok
2127 / 1957 / 196
Регистрация: 25.03.2012
Сообщений: 6,808
Записей в блоге: 1
13.10.2013, 15:36 #2
Цитата Сообщение от NNN7 Посмотреть сообщение
c перестановкой я уже разобрался , а вот с циклами ещё не совсем . объясните , пожалуйста вот эти записи :
C++
1
2
for (int j = 1; j < arraysize; j++) 
for (int k = 0; k < arraysize - 1; k++)
пожалуй, если не разобрался с циклами, рано тебе ещё переходить к сортировкам. Почитай, что такое цикл for, и напиши пару простейших программ с этим циклом. Ещё проще, чем сортировка пузырьком.
Например, найди с помощью цикла сумму чисел от 1 до 10
затем найди с помощью цикла сумму чётных чисел от 1 до 10
0
Grimbo
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 6
13.10.2013, 18:41 #3
В скобках сначала объявляется переменная цикла - j, начальное значение 1.
Цикл выполняется пока (j < arraysize).
При каждой итерации (новом прохождении) j увеличивается на 1.
Вот и вся наука)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 18:41
Привет! Вот еще темы с ответами:

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

Пузырьковая Сортировка - C++
Описать структуру с именем Train, содержащую следующие поля: Point (название пункта назначения), Number (номер поезда), Time (время...

Пузырьковая сортировка - C++
Помогите исправить не сортирует массив.Еще должен считать кол-во шагов прохода цикла. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Пузырьковая сортировка - C++
Есть курсовик. Есть пузырьковая сортировка Есть одно НО. Сортировка должна быть сделана через массив указателей, а не через массив...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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