![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.06.2013
Сообщений: 7
|
![]()
Нужно отсортировать массив по возрастанию сравнивая поочередно соседние члены, причем каждый из элементов массива за один проход цикла может сделать не больше одного перемещения вправо или влево. То есть нужно сравнивать парами 0-й элемент и 1-й, 2-й и 3-й ну и т.д.
Какие Ваши предложения? Если во 2 цикле j будет принимать значения 0 и 1 поочередно то массив отсортируется. Код:
Последний раз редактировалось Stilet; 03.07.2013 в 08:11. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
Моё предложение:
1. Так думаю, что нужно использовать другой тип цикла: do ... while <условие>; 2. При просмотре пар (начинаем с 0-го элемента) фиксируем, было ли перемещение в паре, если да, то переходим к следующей паре (индекс меняем с шагом 2), а иначе индекс меняем с шагом 1. 3. При следующем просмотре начинаем с элемента 1. Надо учитывать, что для последнего элемента может не быть пары. 4. Цикл завершаем, если перемещений при просмотре не было. Пример: 3 7 9 5 6 7 3 9 6 5 7 9 3 6 5 9 7 6 3 5 9 7 6 5 3 Вроде так, ...
Как-то так, ...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.06.2013
Сообщений: 7
|
![]()
тут дело в том что, за один проход цикла если это цикл for, каждый элемент может переместится один раз, то есть из 4 3 2 1 подчеркнутые меняются, за один проход цикла можем получить 3 4 1 2. В Вашем алгоритме разве это условие соблюдается? Например 3 за весь этот цикл do ... while, поменяла свое положение 5 раз.
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
например, дано 4 3 2 1 меняем 4-ку и 1цу местами получаем 1 3 2 4 поясните, сколько, по вашему, перемещений в данном примере сделал каждый из элементов массива? |
|
![]() |
![]() |
![]() |
#5 | |||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]() Цитата:
![]() 2. Да. Алгоритм изложил не точно. Внутри цикла do ... While должен быть цикл для просмотра всех пар массива (пункт 2). Serge_Bliznykov Цитата:
Цитата:
Как-то так, ...
Как-то так, ...
|
|||
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
![]()
Предлагаю вашему вниманию новейщий алгоритм сортировки.
Код:
Помог? Оставляем отзыв =)
Последний раз редактировалось Helloween; 03.07.2013 в 11:56. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
Прошу простить за делитанский подход, но используя пример выше
![]() реализовал алгоритм так: Код:
![]() Проверил и отладил. ![]() Во вложении этот алгоритм на Паскале. Как-то так, ...
Как-то так, ...
Последний раз редактировалось ViktorR; 03.07.2013 в 22:31. Причина: Исправлен код |
![]() |
![]() |
![]() |
#9 | |
Регистрация: 27.06.2013
Сообщений: 7
|
![]() Цитата:
4 3 2 1 3 4 1 2 2 1 4 3 1 2 3 4 |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] | druger | Помощь студентам | 0 | 20.04.2012 15:49 |
сортировка массива | dimas935 | Помощь студентам | 1 | 18.10.2011 15:34 |
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. | lenny_24 | Помощь студентам | 2 | 17.04.2011 18:57 |
сортировка массива | nex 9119 | Помощь студентам | 1 | 16.12.2010 15:58 |
Сортировка массива | Neksion | Помощь студентам | 1 | 02.12.2010 16:46 |