Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет для Delphi-программиста" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Рассылка сайта Delphi coding №1
Информационный Канал Subscribe.Ru |
Рассылка сайта Delphi CodingВыпуск от 07 Сентября 2005 года. Noil.pri.eeПриглашаються авторы статей для сотрудничества с сайтом. Подробности о том как добавить свою статью на сервер читайте здесь
На сайте Delphi Coding собрано большое количество статей, книг и различной компьютерной документации. В рассылке вы сможете увидеть последнии поступления на сайте, а также более подробно ознакомиться с некоторыми материалами.
Желаем Вам приятного чтения. Архивы статей по различным тематикам Delphi
Коллекции статей
Последнии файлыФормула-1 в категории Базы данных Курсовая работа ![]() Схема отношений: ![]() База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine). Источник:http://vt.spbgmtu.ru/ Покупка-продажа товаров в категории Базы данных Курсовая работа ![]() Схема отношений: ![]() База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine). Источник:http://vt.spbgmtu.ru/ Книжный магазин в категории Базы данных Курсовая работа ![]() Схема отношений: ![]() База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine). Источник:http://vt.spbgmtu.ru/ ProcessKillers в категории Система Убивание процессов TextCode в категории Алгоритмы и математика Замена текста набранной в другой кодеровке FormatDrv в категории Система Пример форматирование дисков из Delphi TinWin в категории Система Программа считает сколько секунд запущен Windows HotKeys в категории Система Эта программа, которая позволяет вам определять горячие клавиши, чтобы: запускать приложения, посылать нажатия клавиш в другие приложения, минимизировать все окна, выходить из Win, перезагрузка Win. TVideoCapture v.1.10 в категории Видео Компонент для захвата видео и изображений. Требует DirectShow и DX8. VideoLab v.2.1 в категории Видео OpenWire
Video Lab множество компонентов, основанные на OpenWire 2.x для быстрой обработки видео. Они позволяют быстро производить множество манипуляций с видео без единой строки кода. СтатьяАлгоритмы Сортировки. Часть 1Все из существующих ныне способов сортировки отличаются друг от друга по скорости выполнения, понятности и длине кода, по красоте решения. Зачастую в код уже разработанного алгоритма вносятся какие-либо изменения и так возникает множество решений, некоторые и с которых мы и попробуем сейчас рассмотреть. Однако, следует отметить что изучение алгоритмов совсем не лёгкая задача, здесь требуется внимательное рассмотрение каждой строчки. Конечно если Вы воспользуетесь кнопками Ctrl+C и Ctrl+V Ваша программа не станет хуже работать, но на мой взгляд, нет ничего хуже когда программист сам до конца не понимает, как работает его программа. Итак, начнём. Сортировка выбором И начнём мы с сортировки выбором. Хотя этот алгоритм и не является самым быстрым, но я решил начать с него потому что, на мой взгляд он наиболее прост для понимания. Суть алгоритма состоит в том, что бы в исходном массиве найти наименьший элемент, а затем поменять местами первый элемент в списке с найденным. После того, находиться наименьший их оставшихся и меняется со вторым элементом. И так до тех пор пока весь список не будет отсортирован. Таким образом понадобиться N+(N-1)+(N-2)+...+1 или N*N проходов чтобы отсортировать список.
Переменными min и mах можно ограничить область списка в которой, будет выполнена сортировка. Что бы отсортировать весь массив необходимо записать следующее
Сортировка вставкой Это тоже предельно простой для понимания алгоритм. Идея в том что бы создать новый массив, а затем последовательно вставлять в новый массив элементы из старого массива, чтобы созданный массив был всё время упорядоченным.
Если внимательно посмотреть на реализацию алгоритма, то сразу же заметим что для его выполнения необходимо больше,, чем N*N проходов, поэтому в приложениях, где скорость выполнения кода критична, подобный алгоритм использовать не актуально. Пузырьковая сортировка Чаще всего используется для сортировки частично упорядоченных списков, так как именно для них скорость выполнения максимальна и может равняться O(N), где N количество элементов массива, а O время одного прохода через цикл. Этот алгоритм в исходном списке ищет пары цифр, которые следуют не по порядку и затем меняет их местами.Процесс повторяется до тех пор пока весь список не будет отсортированным. На рисунке изображен пример сортировки данным методом. ![]() На рисунке можно проследить за перемещение элемента, который изначально был ниже чем после сортировки. Во время прохода цикла, элемент изменяет свою позицию на одну позицию ближе к своему конечному месту. На рисунке элемент двигается к вершине, как пузырёк воздуха к поверхности воды. Этот эффект и дал название алгоритму пузырьковой сортировке.
Быстрая сортировка. При этом виде сортировке массив разбивается на две части, а затем рекурсивно вызывает сама себя для их сортировки. Притом элементы первой части меньше любого элемента второй части. Рассмотрим данный вид сортировке на примере: Если алгоритм вызывается для списка, который содержит нуль или один элемент, то подписок уже отсортирован и процедура заканчивается, в противном случае выбирается один элемент, относительно которого список разбивается на две части, в первый подписок идут элементы меньше выбранного, во второй больше. И затем, как уже было сказано, она рекурсивно вызывает сама себя для сортировки обои подсписков.
Стоит также заметить, что такой сортировкой лучше всего пользоваться для упорядочевания массивов элементы в которых следуют абсолютно, случайно. В то время как, если список практически упорядочен, разумнее будет использовать пузырьковую сортировку. К тому же если список достаточно длинный, то алгоритм вызовет глубокую рекурсию и возможно переполнение стёка и как следствие зависание или аварийный выход программы. Сортировка методом Шелла. Ещё один метод сортировки - это сортировка методом Шелла.Основная идея этого алгоритма заключается в том, чтобы в начале ycтpанить массовый беспорядок в массиве, сравнивая далеко стоящие друг от друга элементы. Как видно, интервал между сравниваемыми элементами постепенно уменьшается до единицы. Это означает, что на поздних стадиях сортировка сводится просто к перестановкам соседних элементов (если, конечно, такие перестановки являются необходимыми).
Заключение. В данной статье была предпринята попытка объяснить наиболее часто применяемые алгоритмы сортировки. Однако рассказать о всех аспектах реализации различных алгоритмов в одной статье довольно сложно, и статья получается перенасыщенная информацией, поэтому я решил разбить её на две части и сейчас вторая уже готовиться к выходу. В ней планируется рассказать о более специфических алгоритмах, сортировке не только цифр, но и слов, как русского так и английского языка, а также об обратном процессе сортировки - перемешивания. Удачи! P.S. Замечания, пожелания и дополнения к этой статье просим оставлять на форуме. Исходный код программы, которая использует методы сортировки описанные в этой статье сожно скачать здесь. Автор: Delist Посетите наши форумы:Delphi, Kylix, PascalDelphi - общие вопросы | WinAPI | Работа с сетью | Delphi и Multimedia | Базы данных | Работа с oc Windows | Курилка | Паскаль | Delphi.Net | Kylix Языки программирования C++ | Java | .NET | Ассемблер Web Технологии Php | Perl | Asp | Html Програмное обеспечение Софт для Windows | Oc Windows | Linux | BSD Разное Железо | Взлом и защита | Периферия | Внекомпьютерная жизнь | Объявления Дружественные рассылкиНа этом позвольте проститься с Вами и пожелать удачи. Свои замечания и предложения отправляйте на е-майл, указанный ниже. С уважением, Виталий (NoilTeam@gmail.com) |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphicoding |
Отписаться
Вспомнить пароль |
В избранное | ||