Алгоритм сортировки методом отбора (постоянная Эйлера) |
Автор megabax | ||||||
03.01.2011 г. | ||||||
Алгоритм сортировки методом отбора (постоянная Эйлера)Исходники к уроку можно скачать здесь. Сегодня мы пройдем алгоритм сортировки методом отбора. Суть этого алгоритма заключается в том, что сначала мы ищем наименьший элемент в списке, затем меняем его местами с первый элементом. Затем среди оставшихся элементов ищем следующий наименьший, делаем перестановку найденного элемента со вторым. Потом такую же операцию проводим с третьим элементом и так до тех пор, пока не дойдем до конца массива. Программная реализация этого алгоритма на языке Pascal (или Delphi) выглядит следующим образом:
На том же Delphi напишем тестовый пример для проверки этого алгоритма. Для начала кинем на форму необходимые компоненты (ListBox-ы lbIn и lbOut)*: тип DataArray объявим как
и глобальную переменную на него (выделено красным):
Теперь напишем обработчик нажатия на кнопочку "Старт":
Да, и не забудьте в обработчик создание формы вставить randomize:
Теперь мы можем запустить нашу программу на выполнение: Давайте теперь сравним этом метод с пузырьковой сортировкой. Возьмем для среднего случая, при котором количество сравнений можно вычислить по формуле
где n - количество элементов в массиве, y - постоянная Эйлера, равная примерно 0.577216. Преимущество метода отбора перед методом пузырьковой сортировки иллюстрирует график зависимости количества перестановок от количества элементов в сортируемом массиве: Кстати, именно поэтому алгоритм пузырьковой сортировки практически нигде не применяется, кроме учебных примеров. Исходники к уроку можно скачать здесь. Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями программного продукта "Turbo Delphi", авторское право на который принадлежит "Borland Software Corporation, ** Г. Шилдт, "Теория и практика С++".
|
||||||
Последнее обновление ( 17.02.2013 г. ) |
« След. | Пред. » |
---|