| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Методы сортировки одномерного массива? |
| Автор: Wowa 17.2.2005, 11:31 |
| Какие методы сортировки одномерного массива вы знаете? Желательно приводить метод сортировки на англ. яз и описание. |
| Автор: Akina 17.2.2005, 11:34 |
| algolist.manual.ru Давно пора бы в Избранное занесть... |
| Автор: Sardar 17.2.2005, 11:37 |
| Вообще стоит держать массив уже отсортированным. Т.е. не массив, а дерево(любое). По моему в обычной ситуации быстрее "быстрой сортировки" ничего нет, но если нужны какие то еще результаты(побочное дерево и т.п.), то применяем что то другое. |
| Автор: maxim1000 17.2.2005, 11:53 | ||
не совсем есть еще сортировка слиянием: она гарантированно дает O(n*log n), тогда как быстрая иногда может дать O(n*n) а для "почти отсортированных" массивов вообще, насколько мне не изменяет память, неплохо подходит "пузырек" так что универсальных методов еще не придумали... |
| Автор: Akina 17.2.2005, 12:05 |
| Sardar не каждый массив можно держать сортированным - может ты его получаешь весь сразу, а не накапливаешь... не каждый массив вообще разместится в памяти - тогда о быстрой сортировке можно просто забыть... впрочем кому я это рассказываю... |
| Автор: pablo 17.2.2005, 14:57 |
| Для почти отсортированных масивов лучше сортировки шелла не найти, производительность О(n^(3/2)). Он медленнее быстрой сортировки, но быстрее пузерька. |
| Автор: Akina 17.2.2005, 15:03 |
| pablo А если это массив из 5 элементов? |
| Автор: pablo 17.2.2005, 15:04 |
| Ну и что ? |
| Автор: Wowa 17.2.2005, 16:26 |
| тут: http://liebknecht-gymnasium.bei.t-online.de/sort/html-Seiten/Darstellung.html можно посмотреть разные варианты сортировки в действии |
| Автор: Doc_d0s 17.2.2005, 20:10 | ||
Вот тебе сырец простого слияния ман найдешь на алголисте:
|
| Автор: Sardar 17.2.2005, 21:04 | ||
Нет, для малеьнких и почти отсортированных массивов лучше всего "Сортировка вставками" работает. Обычно в ральном коде если менее 7 элементов осталось, быстрая сортировка на сортировку вставками переключается. |
| Автор: Wowa 17.2.2005, 22:44 | ||||
переключается автоматом что-ли* Добавлено @ 22:44
переключается автоматом что-ли? |
| Автор: Sardar 17.2.2005, 23:13 | ||||
Угу, если пишем рекурсивно(что проще но и опаснее
Сама сортировка похожа на пузырёк Пример на JS(ибо быстро
|
| Автор: Гость_Артём 22.2.2005, 14:50 |
| Люди здрасте! В связи с тем что я начал изучать недавно c++ у меня возникли некоторые проблемы. Мне очень нужен алгоритм или программы поиска ОДНОГО СЛОВА ИЗ ВСЕГО ТЕКСТА, но не с помощью FindDialog а посредством чего нибудь другого, т.е. после запуска программы она должна "брать" из RichEdit'а текст (весь который там находится) и проверять совпадения слов со словами находящимися в БД. Например, в поле RichEdit вводишь: { ... вверх 10 влево 15 вниз 5 ... } и программа должна испонить команду - передвинуть, например, Shape вверх на 10 пикселей, влево на 15 и вниз на 5. Помогите пожалуйста!!!! Заранее благодарен. |
| Автор: chaos 22.2.2005, 15:12 |
| можеш воспользоваться стандартной функцией qsort или STL'евским sort |
| Автор: pablo 22.2.2005, 16:44 |
| Сортировка вставками хорошо работает при маленьких объемах данных. При больших она медленная, О(n^2). Быстрая сортировка хорошо работает когда данные помешены в разнобой:(n * log(n)), но плохо когда они почти отсортированны, O(n^2). Пузырьковая сортировка работает медленно почти всегда. O(n^2) Пирaмидальная сортировка работает хорошо всегда, O(n * log(n)),только требует построения из масива структуры данных: пирамиду. Сортировка методом Шелла немного быстрее вставками, но медленнее чем быстрая, если данные находятся в разнобой, её производительность О(n^(3/2)). Так что для разной ситуации, надо выбирать разный алгоритм. |
| Автор: Sardar 22.2.2005, 19:22 |
| Гость_Артём это простейшая задача из области разбора выражений, конкретно лексический анализ. Потребуется знание автоматов и их реализация в компе(таблично управляемый как раз что нужно) Читаем теорию, а пока достаём lex или flex, генерим парсер, компилируем, наслаждаемся. |
| Автор: IEZ 23.2.2005, 00:33 |
| Загнать этот одномерный массив в STL и там уже сортировать специальными функциями. |
| Автор: cardinal 23.2.2005, 00:47 |
| http://forum.vingrad.ru/index.php?showtopic=12322 |