![]() |
| | |||||||
| Регистрация | Правила | Блоги | Пользователи | Социальные группы | Поиск | Сообщения за день | Все разделы прочитаны |
| |
![]() |
| |
| | #1 | |
| mik-a-el Администратор Регистрация: 10.04.2006 Адрес: Москва
Сообщений: 12,073 Репутация: 20662 (9605) |
Наиболее часто задаваемые вопросы по С++. Реализация распространенных алгоритмов, решения типовых задач. Статьи и учебники C++ Оглавление: 0. Сортировка Последний раз редактировалось XuTPbIu_MuHTAu; 18.05.2009 в 00:16. | |
| | ||
| Другие темы раздела | |
| Составить программу вычисления значений функций на отрезках C++ Помогите пожалуйста составить программу на языке С++ Составить программу вычисления значиний функций F(x) на отрезке Подробнее во вложении:. Составить программу вычисления значений функций на отрезках | C++ Программа: Итерационные циклы Подробнее во вложении: Помогите составить программу на С++. Программа: Итерационные циклы |
| | #2 | ||||||||||||||||||||||||||
| mik-a-el Администратор Регистрация: 10.04.2006 Адрес: Москва
Сообщений: 12,073 Репутация: 20662 (9605) | Алгоритмы сортировки строк 1. Сортировка выбором Идея метода состоит в том, чтобы создавать отсортированную последовательность путем присоединения к ней одного элемента за другим в правильном порядке. Если входная последовательность почти упорядочена, то сравнений будет столько же, значит алгоритм ведет себя неестественно. Реализация на С++ Реализация на Си 2. Сортировка пузырьком(обменом) Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами. Реализация на С++ Реализация на Си Дополнительная память, очевидно, не требуется. Поведение усовершенствованного (но не начального) метода довольно естественное, почти отсортированный массив будет отсортирован намного быстрее случайного. Сортировка пузырьком устойчива, однако шейкер-сортировка утрачивает это качество. На практике метод пузырька, даже с улучшениями, работает слишком медленно. А потому - почти не применяется. 3. Сортировка вставками Сортировка простыми вставками в чем-то похожа на вышеизложенные методы. Реализация на С++ Реализация на Си Аналогично сортировке выбором, среднее, а также худшее число сравнений и пересылок оцениваются как O(n^2), дополнительная память при этом не используется. Хорошим показателем сортировки является весьма естественное поведение: почти отсортированный массив будет досортирован очень быстро. Это, вкупе с устойчивостью алгоритма, делает метод хорошим выбором в соответствующих ситуациях. Алгоритм можно слегка улучшить. Заметим, что на каждом шаге внутреннего цикла проверяются 2 условия. Можно объединить из в одно, поставив в начало массива специальный сторожевой элемент. Он должен быть заведомо меньше всех остальных элементов массива. 4. Сортировка Шелла Сортировка Шелла является довольно интересной модификацией алгоритма сортировки простыми вставками. Реализация Часто вместо вычисления последовательности во время каждого запуска процедуры, ее значения рассчитывают заранее и записывают в таблицу, которой пользуются, выбирая начальное приращение по тому же правилу: начинаем с inc[s-1], если 3*inc[s] > size. 5. Пирамидальная сортировка Пирамидальная сортировка является первым из рассматриваемых методов, быстродействие которых оценивается как O(n log n). Реализация Построение пирамиды занимает O(n log n) операций, причем более точная оценка дает даже O(n) за счет того, что реальное время выполнения downheap зависит от высоты уже созданной части пирамиды. Вторая фаза занимает O(n log n) времени: O(n) раз берется максимум и происходит просеивание бывшего последнего элемента. Плюсом является стабильность метода: среднее число пересылок (n log n)/2, и отклонения от этого значения сравнительно малы. Метод не является устойчивым: по ходу работы массив так "перетряхивается", что исходный порядок элементов может измениться случайным образом. 6. Быстрая сортировка (сортировка Хоара) "Быстрая сортировка", хоть и была разработана более 40 лет назад, является наиболее широко применяемым и одним их самых эффективных алгоритмов. Псевдокод.
Итеративный алгоритм быстрой сортировки. Псевдокод.
Поразрядная сортировка Рассматриваемый ниже алгоритм существенно отличается от описанных ранее. Во-первых, он совсем не использует сравнений сортируемых элементов. Во-вторых, ключ, по которому происходит сортировка, необходимо разделить на части, разряды ключа. Например, слово можно разделить по буквам, число - по цифрам...
Последний раз редактировалось Jupiter; 28.12.2011 в 13:53. Причина: отформатировал код, разделил реализации Си и С++, но ещё не закончил | ||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||
| После регистрации реклама в сообщениях будет скрыта | |
| | #3 | |
| odip Форумчанин Эксперт C++ Регистрация: 17.06.2009 Адрес: Новосибирск
Сообщений: 11,672 Репутация: 6244 (2537) | Для 64-битных машин достаточно взять MAXSTACK=64 Совершенно незачем брать 2048 | |
| | ||
![]() |
| Похожие темы | |
| Тема | Автор |
| C для начинающих методы сортировок Есть код Сортировка массива по возрастанию (метод пузырька) но выдает ошибки проверте пожалуйста у себя #include <stdio.h> void bubble_sort(int *data, int size) { int i, j; for (i = 0; i < size; ++i) { for (j = size - 1; j > i; --j) { if (data < data) { int t = data; | gorynech2 |
| C# .NET алгоритмы сортировок здравствуйте! я писала программу на с#, мне нужна помощь в том что бы при при нажатии на кнопку сортировок выводился не только массив поэтапно меняющийся, а еще и писал в каждом этапе какой с каким элементом меняется. Вот код программы using System; using System.Collections.Generic; using... | Еленко |
| С++ для начинающих Сортировка вектора с демонстрационной диаграммой. Сравнить различные алгоритмы сортировок по количеству операций. Сортировка вектора. | Tyurs92 |
| С++ для начинающих Алгоритмы сортировок Добрый день. Если у кого есть, просьба выложить коды следующих сортировок: Пирамидальная сортировка. Сортировка подсчетом Простое однократное слияние. Сортировка квадратичной выборкой. Сортировка “хитрая” | Sick2 |
| С++ для начинающих Алгоритмы сортировок Недавно была необходимость сравнить некоторые алгоритмы сортировок... Если кому-нибудь понадобятся... вообщем вот... Алгоритмы реализованы ввиде функций, с передачей парметров: Массива A и кол-ва элементов массива n // Метод простого извлечения void SimpleExtract(int *A, int n) { int... | Monte-Cristo |
| Опции темы | |
| |
| |