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

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

Войти
Регистрация
Восстановить пароль
 
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
#1

Такая сортировка методом пузырька правильная? - C++

01.02.2014, 11:54. Просмотров 275. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
    int a[10] = {100, 90, 300, 1, -200, -600, 800, 100, 400, 70};
    int i,j,k;
    for (i=0;i<10;i++)
     for (j=0;j<10;j++)
      if (a[j] > a[j+1]){
        k = a[j+1];
        a[j+1]=a[j];
        a[j] = k;
      }
Добавлено через 7 минут
или так лучше?
C++
1
2
3
4
5
6
7
8
9
    int a[10] = {100, 90, 300, 1, -200, -600, 800, 100, 400, 70};
    int i,j,k;
    for (i=0;i<10;i++)
     for (j=9;j>=i;j--)
      if (a[j] > a[j+1]){
        k = a[j+1];
        a[j+1]=a[j];
        a[j] = k;
      }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Такая сортировка методом пузырька правильная? (C++):

Сортировка методом пузырька - C++
Помогите пожалуйста исправить ошибки. Сортировка пузырьком многомерного массива. #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include...

Сортировка методом пузырька - C++
Народ, можете помочь с сортировкой массива методом пузырька. Буду очень презнателен за скорую помощь)) Вот прога: #include...

Сортировка методом пузырька - C++
Народ, помогите написать функциональное назначение сортировки методом пузырька))

Сортировка методом пузырька - C++
Ребята помогите , необходимо написать программу в с++ , для сортировки массива из 10 элементов введенных пользователем - методом...

Сортировка методом пузырька - C++
Написать программу, которая методом обмена («пузырька») сортирует по убыванию введенный с клавиатуры одномерный массив.

Сортировка методом пузырька - C++
//--------------------------------------------------------------------------- #include &lt;conio.h&gt; #include &lt;vcl.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
01.02.2014, 11:56 #2
В первом случае очевидно будет выход за границы массива.
Да и есть же тема: Алгоритмы сортировок
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 1
01.02.2014, 12:04 #3
Цитата Сообщение от PriZrаK Посмотреть сообщение
или так лучше?
Во втором то же что то пичальное
надо
C++
1
2
for (i=0;i<10;i++)
     for (j=0;j<9;j++)
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
01.02.2014, 12:05  [ТС] #4
Цитата Сообщение от 0x10 Посмотреть сообщение
В первом случае очевидно будет выход за границы массива.
Да и есть же тема: Алгоритмы сортировок
А зачем нужен внешний цикл?
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
01.02.2014, 12:07 #5
Цитата Сообщение от PriZrаK Посмотреть сообщение
А зачем нужен внешний цикл?
Во внутреннем цикле только меняются местами соседние элементы. Очевидно, в общем случае за один проход массив не может быть упорядочен, поэтому проходов нужно N-1.
Описание алгоритма есть на википедии.
Байт
Эксперт C
15982 / 10250 / 1536
Регистрация: 24.12.2010
Сообщений: 19,332
01.02.2014, 12:31 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
PriZrаK, Первый вариант, как заметил 0x10, просто нерабочий. Но даже его исправить (for(j=0; j<9; j++)), он будет делать много лишнего, т.е. анализировать уже отсортированные отрезки массива.
Второй вариант, кажется на взгляд, приемлемым. Но проверку его работоспособности надо сделать на компьютере.

Добавлено через 1 минуту
Цитата Сообщение от Kill100 Посмотреть сообщение
Во втором то же что то пичальное
надо
C++
1
2
for (i=0;i<10;i++)
     for (j=0;j<9;j++)
Лишние сравнения.

Добавлено через 19 минут
Цитата Сообщение от Байт Посмотреть сообщение
Но даже его исправить
"если" пропустил. Но, надеюсь, меня поняли
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
01.02.2014, 13:28  [ТС] #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Во внутреннем цикле только меняются местами соседние элементы. Очевидно, в общем случае за один проход массив не может быть упорядочен, поэтому проходов нужно N-1.
Описание алгоритма есть на википедии.
просто интересно, а у всех начинающих(вроде меня) проблемы с сортировкой массивов? Или это сама по себе сложная задача?
Байт
Эксперт C
15982 / 10250 / 1536
Регистрация: 24.12.2010
Сообщений: 19,332
01.02.2014, 14:02 #8
Цитата Сообщение от PriZrаK Посмотреть сообщение
Или это сама по себе сложная задача?
Методом пузырька - сами видели - все просто - несколько строк вполне несложного кода. Другие методы, Шелла, Хоара и прочие - немного посложнее, но тоже как говаривал Корвьев - "Подумаешь, Бином Ньютона!"
Конечно, пока новичок плохо себе представляет, что такое массивы, да, он будет испытывать затруднения.
Кстати, Шелла - тот же пузырек, только с "лифтом". Он додумался сравнивать не соседние элементы, а через N/2, благодаря чему "пузырьки" поднимаются значительно быстрее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 14:02
Привет! Вот еще темы с ответами:

Сортировка методом пузырька - C++
всем доброго времени суток сделал программу делающую сортировку методом пузырька, она работает только с целыми числами, не мог бы...

Сортировка методом пузырька - C++
Приветствую всех. Нужно решить простую задачу. Есть массив из 10 элементов от 0 по 9. И в нём записаны различные числа. И их нужно...

Сортировка методом пузырька - C++
добрый день по книге учу c++ и в книге был приведен пример сортировки элементов массива методом пузырька с использованием указателей ...

Сортировка методом пузырька - C++
пытаюсь отсортировать массив из 10000 элементов по возрастанию методом пузырька,числа рандомно заполняются.Ничего не выходит.Быть может это...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.02.2014, 14:02
Ответ Создать тему
Опции темы

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