Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка элементов 
V
    Опции темы
BIV
Дата 12.2.2011, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Всем доброе время суток!
Меня заинтересовали методы сортировка элементов, пусть даже массивов. Я знаю только один метод "метод пузырька", где мы в цикле сравниваем какой из элементов больше или меньше и в соответствии условием переставляем их местами. Мне кажется, что такая сортировка очень долгая, будут замечаться тормоза, если будет большое количества элементов.
Какие бывают еще методы и как они работают? Какие методы считаются быстрыми?
PM MAIL   Вверх
azesmcar
Дата 12.2.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(BIV @  12.2.2011,  14:31 Найти цитируемый пост)
Какие бывают еще методы и как они работают? Какие методы считаются быстрыми? 

http://ru.wikipedia.org/wiki/%D0%90%D0%BB%...%B2%D0%BA%D0%B8

Цитата(BIV @  12.2.2011,  14:31 Найти цитируемый пост)
Какие методы считаются быстрыми?

Такого понятия как "самый быстрый алгоритм сортировки" не существует, их сравнивают по разным критериям. Например сложность алгоритма в худшем случае (worst-case). Некоторые алгоритмы хорошо подходят для параллельного выполнения.. в общем все зависит.
PM   Вверх
_Y_
Дата 12.2.2011, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Метод пузырька далеко не самый медленный и не самый простой. Проще и, как правило, медленнее метод попарной перестановки.

Вообще же скорость сортировки больше всего зависит от исходной расстановки элементов. В каком-то варианте та же попарная перестановка сработает быстрее всех.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 12.2.2011, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(_Y_ @  12.2.2011,  18:37 Найти цитируемый пост)
Метод пузырька далеко не самый медленный и не самый простой. Проще и, как правило, медленнее метод попарной перестановки.

Метод пузырька (камня) в одной из двух возможных реализаций и есть метод попарной перестановки.

Цитата(BIV @  12.2.2011,  15:31 Найти цитируемый пост)
Какие бывают еще методы и как они работают? Какие методы считаются быстрыми? 

http://algolist.manual.ru/sort/index.php


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 13.2.2011, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Akina @ 12.2.2011,  21:17)
Метод пузырька (камня) в одной из двух возможных реализаций и есть метод попарной перестановки.

Отнюдь. 

Метод попарной перестановки, в его классическом варианте, заключается в тупом проходе по всему массиву данных с последовательной проверкой каждой пары соседей. При необходимости пара соседей меняется местами. Цикл прерывается после прохода, в котором ни одна пара местами поменена не была. При всей своей тупости, алгоритм обладает неоспоримым преимуществом: у программы самый простой код: один цикл, один флаг, одна дополнительная переменная. Его легко объяснять студентам нетехнических специальностей  smile

В методе пузырька каждый элемент по очереди "всплывает" в массиве до того, как найдет свое место. Осуществлено всплывание может быть как попарными перестановками (что не есть хорошо), так и сдвигом блока элементов в массиве: поэлементно или всем блоком (конечно, если синтаксис конкретного языка допускает такой  сдвиг блока). 

Это сообщение отредактировал(а) _Y_ - 13.2.2011, 00:08


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 13.2.2011, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(_Y_ @  13.2.2011,  01:01 Найти цитируемый пост)
Метод попарной перестановки, в его классическом варианте, заключается в тупом проходе по всему массиву данных с последовательной проверкой каждой пары соседей.

Вы забываете, что на каждом проходе длина прохождения уменьшается на 1. Или это уж слишком тупая реализация. Так что получается тот же камень-пузырёк.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 13.2.2011, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Akina @  13.2.2011,  14:36 Найти цитируемый пост)
Вы забываете, что на каждом проходе длина прохождения уменьшается на 1. Или это уж слишком тупая реализация. Так что получается тот же камень-пузырёк. 

Сначала хотел написать "ну Вы меня удивляете!". Потом подумал "а не дурак ли я?". Или неправильно алгоритм простейший расписал? Действительно, в описании пузырькового алгоритма написал "...всплывание может быть как попарными перестановками (что не есть хорошо)..." думал так будет понятнее. Надо понимать этим все и запутал.
 
Вот блок-схема алгоритма попарной перестановки:
user posted image
Действительно, последний элемент в нем гарантированно занимает свое место с первого прохода, со второго прохода - два последних элемента, и т.д. Т.е. вполне логично укорачивать цикл по ходу дела.

Но тупость алгоритма не в этом, а в том, что элементы переставляются именно попарно. В алгоритме камня/пузырька, тонущий/всплывающий элемент должен запоминаться в буферной переменной один раз, после чего сдвигается весь блок внутри массива и, только после этого, элемент "возвращается" в массив - уже на нужное (но не обязательно окончательное) место.

В результате сдвиг элемента на M позиций требует в одном варианте 3*M присвоений (попарная перестановка), а в другом только M+2 (камень/пузырек). А если язык позволяет двигать блоки в массиве, то и того лучше - два присвоения и сдвиг блока.

Однако, здесь есть один нюанс. Начальная расстановка элементов в сортируемом массиве определяет сколь велик выигрыш от применения пузырька. Чем короче сдвигаемые за один раз блоки, тем меньше выигрыш.

Это сообщение отредактировал(а) _Y_ - 13.2.2011, 19:04


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 13.2.2011, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(_Y_ @  13.2.2011,  19:54 Найти цитируемый пост)
В алгоритме камня/пузырька, тонущий/всплывающий элемент должен запоминаться в буферной переменной один раз, после чего сдвигается весь блок внутри массива и, только после этого, элемент "возвращается" в массив - уже на нужное (но не обязательно окончательное) место.

Обалдеть, я уже думал, что об этом никто не помнит...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 14.2.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Akina @  13.2.2011,  22:53 Найти цитируемый пост)
Обалдеть, я уже думал, что об этом никто не помнит... 

А дырки в перфокартах глазами читать слабо? smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 14.2.2011, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



C перфокартами не работал. А вот перфоленты - ещё как...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.