Сортировка обменом («пузырьковая» сортировка)




Принцип метода

Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива.

После одного такого прохода на последней n-й позиции массива будет стоять максимальный элемент («всплыл» первый «пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-го элемента. И так далее. Всего требуется n-1 проход.

Пример:

               
               
               
               
               
               
               
               

Сравнение прямых методов сортировки

Теоретические и практические исследования алгоритмов прямых методов сортировки показали, что как по числу сравнений, так и по числу присваиваний они имеют квадратичную зависимость от длины массива n. Исключение составляет метод выбора, который имеет число присваиваний порядка n*ln(n). Это свойство алгоритма выбора полезно использовать в задачах сортировки в сложных структурах данных, когда на одно сравнение выполняется большое число присваиваний. В таких задачах метод выбора успешно конкурирует с самыми быстрыми улучшенными методами сортировки.

Если сравнить рассмотренные прямые методы между собой, то в среднем методы вставки и выбора оказываются приблизительно эквивалентными и в несколько раз (в зависимости от длины массива) лучше, чем метод обмена («пузырька»).

Пример сортировки методом «пузырька»

Const N=100;

Var i, Temp: integer;

A: array[1..N] of integer;

Flag: boolean;

Begin

Randomize;

Writeln('Несортированный массив');

For i:=1 To N Do begin A[i]:=random(50); Write(A[i]:3); end;

Writeln;

Flag:=true;

While Flag Do

Begin

Flag:=false;

For i:=1 To N-1 Do

begin

If A[i]>A[i+1] Then

begin

Temp:=A[i];

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

A[i+1]:=Temp;

Flag:=true;

end; {If}

end; {For}

end; {While}

Writeln('Отсортированный массив');

For i:=1 To N Do Write(A[i]:3);

readln;

End.

Порядок выполнения работы

Работа выполняется студентом самостоятельно и состоит из этапов:

1) изучение методических указаний по выполнению лабораторной работы и получение индивидуального задания;

2) составление алгоритма и программы на алгоритмическом языке Pascal;

3) отладка программы;

4) защита лабораторной работы.

Общие требования к программе:

· текст программы представляется в электронном виде и должен включать постановку задачи, сведения об авторе и подробные комментарии;

· названия переменных должны быть логически обоснованны и давать понятие о том, что в них предполагается хранить или обрабатывать;

· программа должна запрашивать входные данные и выводить итоговый результат с пояснениями.

Список заданий

Для выполнения данной лабораторной работы необходимо написать программу на языке Pascal, которая сортирует данные указанным методом.

Программа состоит из следующих этапов:

1. Объявление необходимой области данных (константы, переменные, массивы).

2. Заполнение массивов неупорядоченными данными.

3. Вывод массива с данными.

4. Формирование циклов, в которых выполняется сортировка данных.

5. Вывод массива с данными.

 

№ варианта                      
Задание 1A­ 1B­ 1C­ 1D­ 1E­ 2A­ 2B­ 2C­ 2D­ 2E­ 3A­
№ варианта                      
Задание 3B­ 3C­ 3D­ 3E­ 1A¯ 1B¯ 1C¯ 1D¯ 1E¯ 2A¯ 2B¯
№ варианта                      
Задание 2C¯ 2D¯ 2E¯ 3A¯ 3B¯ 3C¯ 3D¯ 3E¯      

Примечание.

1. Методы сортировки: 1 – вставкой; 2 – выбором; 3 – обменом. 2. Содержимое массива: A – прописные латинские; B – заглавные латинские; С – прописные русские; D – заглавные русские; E – вещественные числа. 3. Направление сортировки: ­ - по возрастанию; ¯ - по убыванию.  

 


5. Контрольные вопросы

1. Как объявляются одномерные массивы? Как выполняется доступ к элементам массива?

2. Каким образом можно обойти все элементы двумерного массива?

3. Какого типа данных могут быть элементы массива?

4. Какие строки бывают в языке Pascal?

5. Назовите подпрограммы для работы со строками длиной до 255 символов.

6. В чем состоит принцип методов сортировки вставки, обмена и выбора?

7. Какой метод сортировки эффективнее? Почему?

Список рекомендуемой литературы

1. Немнюгин, С.А. Turbo Pascal: программирование на языке высокого уровня / С.А. Немнюгин. – 2-е изд. – СПб.: Питер, 2006. – 544с.

2. Немнюгин, С.А. Turbo Pascal: практикум / С.А. Немнюгин. – 2-е изд. – СПб.: Питер, 2006. – 272с.

3. Фаронов, В.В. TurboPascal: учебное пособие / В.В. Фаронов. – М.: Изд.: ОМД Групп, 2007. – 368с.

4. Иванова, Г.С. Основы программирования: учебник для вузов / Г.С. Иванова. – 3-е изд., испр. – М.: МГТУ им. Н.Э. Баумана, 2004. – 416с.

5. Марченко, А.И. Программирование в среде Turbo Pascal 7.0. / А.И. Марченко, Л.А. Марченко. – М.: Бином Универсал, К.: ЮНИОР, 1997. – 496с.

6. Культин, Н.Б. Turbo Pascal в задачах и примерах / Н.Б. Культин. – СПб.: БХВ-Петербург, 2007. – 256с.

7. Коффман, Э.М. Turbo Pascal / Э.М. Коффман. – 5-е изд. – М.: Вильямс, 2005. – 896с.

8. Рапаков Г.Г. Программирование на языке Pascal: учебное пособие / Г.Г. Рапаков, С.Ю. Ржеуцкая – СПб.: БХВ-Петербург, 2004. – 480с.

Алгоритмические языки и программирование. Работа с массивами: методические указания к выполнению лабораторной работы №4 для студентов очной формы обучения специальности 230201 – "Информационные системы и технологии".

 

Сергей Михайлович Рощин

Юрий Алексеевич Леонов

 

Научный редактор Ю.М. Казаков

Редактор издательства Л.И. Афонина

Компьютерный набор С.М. Рощин

 

 

Темплан 2007г., п. 457

Подписано в печать Формат 60х84 1/16. Бумага офсетная. Офсетная печать. Усл. печ. л. 0,87 Уч. – изд. л. 0,87 Тираж 50 экз. Заказ Бесплатно

 

Брянский государственный технический университет.

Брянск, бульвар 50-летия Октября, 7, тел. 58-82-49.

Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: