Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2009, 07:30   #31
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Если бы это был такой хороший метод, то, наверное, не разрабатывали-бы алгоритм быстрой сортировки:
алгоритм быстрй сортировки несомненно хорош. повторяю. я не говорю что приведённый мной алгоритм самый лучший, я говорю что он лучший из простых алгоритмов, а алгоритм быстрой сортировки в простым алгоритмам не относится, так же как и алгоритм шелла. И тем более алгоритм быстрой сортировки не всегда подходит, и к тому же всегда есть вероятность переполнения, так как есть рекурсия.
rpy3uH вне форума Ответить с цитированием
Старый 18.04.2009, 10:56   #32
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Алгоритм быстрой сортировки не всегда работает так, как надо. К тому-же он относиться к не устойчивый, что в моём случае смотрится не очень красиво....
Altera вне форума Ответить с цитированием
Старый 07.05.2009, 22:08   #33
Warnes
Пользователь
 
Регистрация: 11.04.2009
Сообщений: 23
По умолчанию

Ого. Неделю тут не был,а тут уже из-за моего вопросса дискуссия кипит=)
Warnes вне форума Ответить с цитированием
Старый 03.12.2009, 21:05   #34
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Алгоритм быстрой сортировки не всегда работает так, как надо. К тому-же он относиться к не устойчивый, что в моём случае смотрится не очень красиво....
Неустойчивость - это да, а вот сортирует правильно всегда (что легко доказать математически).
Я бы советовал в таких случаях или хэш+быстрая по хэшу, или просто быструю юзать.
LeBron вне форума Ответить с цитированием
Старый 03.12.2009, 21:12   #35
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Че вы паритесь, сортируйте пузырьком! (с)
Levsha100 вне форума Ответить с цитированием
Старый 03.12.2009, 21:24   #36
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Я всегда использую біструю сортировку.
http://www.sorting-algorithms.com/ ресурс интересній и полезній для єтой темі.
bullvinkle вне форума Ответить с цитированием
Старый 05.12.2009, 21:03   #37
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Есть еще сортировка подсчетом.Время работы равняется максимальному числу в массиве.
Принцип работы:

создается массив на n элементов где n максимальное число в массиве
Пробегаем по массиву и инкрементируем ms[i] где i текущее элемент массива.Потом просто идем по нашему массиву ms и ms[i] раз выводим число i.

Время работы сортировки пузырьком и вставками равняется n*n где n кол-во элементов.Компьютер в среднем за секунду выполняет 10^8 операций.

Время работы быстрой сортировки N * log(N) где N кол-во элементов в массиве.НО эта сложность рассчитана в среднем.Худший случай,когда например массив 1 2 3 4 5 ... и так далее сортировка будет работать за n*n но доказано что алгоритм в большинстве случаев эффективней чем N * Log N.

Есть еще сортировка на куче,черпачная сортировка(очень тяжелая в реализации но работает за n)
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 05.12.2009, 21:34   #38
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,902
По умолчанию

Ozerich
Уже было в этой теме.
Arigato вне форума Ответить с цитированием
Старый 05.12.2009, 23:46   #39
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
Есть еще сортировка подсчетом.Время работы равняется максимальному числу в массиве.
Принцип работы:

создается массив на n элементов где n максимальное число в массиве
Пробегаем по массиву и инкрементируем ms[i] где i текущее элемент массива.Потом просто идем по нашему массиву ms и ms[i] раз выводим число i.

Время работы сортировки пузырьком и вставками равняется n*n где n кол-во элементов.Компьютер в среднем за секунду выполняет 10^8 операций.

Время работы быстрой сортировки N * log(N) где N кол-во элементов в массиве.НО эта сложность рассчитана в среднем.Худший случай,когда например массив 1 2 3 4 5 ... и так далее сортировка будет работать за n*n но доказано что алгоритм в большинстве случаев эффективней чем N * Log N.

Есть еще сортировка на куче,черпачная сортировка(очень тяжелая в реализации но работает за n)
Исправления: время работы O(N+M), фактически, чуть иначе, но само считывание и заполнение массива заберет именно столько, а вывод в отсортированный массив - еще О(N) (edit - протупил, тоже O(N+M)). Небольшой минус - памяти много надо. При этом M - это не максимум массива, а количество различных возможных значений в массиве. Быстрая сортировка при рандомизированной реализации хоть и может работать за О(n*n), но вероятность не очень большая. Да и при нерандомизированной главное, что бы не был набор информации специально для завала. Вероятность случая расписывается через логарифмы, и получается, что самый худший случай возможный только в 1 наборе, то есть для 1000 чисел самый худший случай возможен лиш с веротностью в 0.000.. (примерно 300 нолей )..01. Ну и вообще с отклонением в сторону квадрата не все так страшно. Вообще-то доказано, что отсортировать массив быстрее, чем N * log(N) без дополнительной информации невозможно. Есть некоторые более быстрые сортировки с большой константой (та же сортировка Хана), которые просто получают эту информацию перед сортировкой довольно быстро, и потом довольно быстро сортируют с помощью этой информации. Но на практике такое использовать не выгодно. Там маленькая сложность перекрывает большую константу при очень больших наборах данных.
LeBron вне форума Ответить с цитированием
Старый 06.12.2009, 11:24   #40
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,902
По умолчанию

Всё же сортировка подсчётом (или линейная сортировка) самая быстрая.
Простой пример. Дан массив, состоящий из 1 000 000 элементов. Заполняем случайными числами от 0 до 999.
Отсортируйте его пузырьком или даже быстрой сортировкой, замерьте время работы алгоритма.
Теперь отсортируйте его линейной сортировкой и тоже замерьте время.
Сделайте выводы
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка многомерного массива на тип сортировки его строк. FatCat Помощь студентам 4 20.12.2008 21:21
Из сортировки массива в сортировку матрици XXXimpulsXXX Помощь студентам 2 12.10.2008 15:11
Какой самый быстрый метод заполнения массива, например двухмерного? SkAndrew Общие вопросы Delphi 11 29.05.2008 13:23
ВИд benjaminfran Софт 2 22.02.2008 08:55
Предложите самый быстрый алгоритм! Gambler Общие вопросы Delphi 6 26.12.2006 22:44