русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сортировка методом прямого обмена


Дата добавления: 2013-12-23; просмотров: 1831; Нарушение авторских прав


Сортировка методом прямого выбора

Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:

Просматривая массив от первого элемента, найти минимальный и поместить его на место первого элемента, а первый на место минимального.

Просматривая массив от второго элемента, найти минимальный и поместить его на место второго элемента, а второй на место минимального.

И так далее до предпоследнего элемента.

Ниже представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.

CONST

size = 5 ;

VAR

A : Array[1..5] of Integer ;

i : Integer ; { номер эл-та, от которого ведется поиск минимального эл-та }

min : Integer ; { номер минимального эл-та в части массива }

{ от i до верхней границы массива }

j : Integer ; {номер эл-та, сравниваемого с минимальным }

buf : Integer ; {буфер, используемый при обмене эл-тов массива }

k : Integer ;

BEGIN

Write(‘ Введите’,size:3,’ целых в одной строке через пробел ‘) ;

For k := 1 to size do read(A[k]);

writeln(‘ Сортировка ‘) ;

For i := 1 to size-1 do

Begin

{поиск минимального эл-та в части массива от A[i] до A[size]}

min := i ;

for j := i+1 to size do begin

if A[j]<A[min] then min := j ;

{ поменяем местами A[min] и A[i] }

buf := A[i] ;

A[i] := A[min] ;

A[min] := buf ;

{ выведем массив }

for k:=1 to size do write(A[k],’ ‘) ;

writeln ;

end ;

end ;

writeln( ‘ Массив отсортирован ’ ) ;

END.

В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением ¾ к концу массива (тонут), поэтому этот метод иногда называют “пузырьковым”. Этот процесс повторяется на единицу меньше раз, чем элементов в массиве.



На рис. 17 показан пример сортировки массива. Буквой (“а”) обозначено исходное состояние массива и перестановки на первом проходе, буквой (“б”) ¾ состояние после перестановок на первом проходе и перестановки на втором проходе и так далее.

Рис.17. Процесс сортировки массива.

 

Ниже представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого цикла обменов.

CONST

size = 5 ;

VAR

A : Array[1..5] of Integer ;

i : Integer ; { счетчик циклов}

k : Integer ; { текущий индекс элемента массива ]

buf : Integer ;

BEGIN

WriteLn( ‘ Сортировка массива пузырьковым методом’) ;

Write(‘ Введите’,size:3,’ целых в одной строке через пробел ‘) ;

For k := 1 to size do read(A[k]);

writeln(‘ Сортировка ‘) ;

for i := 1 to size-1 do begin

for k := 1 to size-1

do begin

if A[k] > A[k+1]

then begin

{обменяем k-ый и (k+1)-ый элементы}

buf := A[k} ;

A[k] := A[k+1] ;

A[k+1] := buf ;

end ;

end ;

for k := 1 to size do write(A[k],’ ‘) ;

writeln ;

end ;

writeln(‘ Массив отсортирован ‘) ;

END.



<== предыдущая лекция | следующая лекция ==>
Сортировка массива | Поиск в массиве


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.