Сортировка одномерного массива методом пузырька
Рассмотрим алгоритм сортировки методом пузырька (Метод назван "методом пузырька", потому что большие элементы, подобно пузырькам, "всплывают" на соответствующую позицию в противоположность "методу погружения" (т. е. методу простых вставок), в котором элементы погружаются на соответствующий уровень. Метод пузырька известен также под более прозаическими именами, такими, как "обменная сортировка с выбором" или метод "распространения".) на следующем примере:
На занятии по физкультуре присутствовала 1 группа, состоящая из 5 студентов. Преподаватель по физкультуре в начале занятия должен их расставить по росту (т.е. – по его убыванию). Определим следующий алгоритм:
Преподаватель двигается вдоль шеренги слева направо.
Если левый студент в паре, ниже правого, преподаватель меняет их местами и переходит к следующей паре.
Рассмотрим в качестве примера массив
-
1
2
3
4
5
И разработаем алгоритм для обработки такого массива, тем более он подойдет и для массива, где ряд элементов уже стоит на своих местах
1 | 2 | 3 | 4 | 5 | Массив перед сортировкой |
2 | 1 |
|
|
| 1-ый проход вдоль шеренги преподавателя (k=1) |
| 3 | 1 |
|
|
|
|
| 4 | 1 |
| Номер левого элемента в паре меняется |
|
|
| 5 | 1 | от 1-го до 4-го (i=1..4) |
2 | 3 | 4 | 5 | 1 | Массив после 1-го прохода. Один элемент занял свое место |
3 | 2 |
|
|
|
|
| 4 | 2 |
|
| 2-ой проход вдоль шеренги преподавателя физкультуры |
|
| 5 | 2 |
| k=2, i=1..3 |
3 | 4 | 5 | 2 | 1 | Массив после второго прохода. Два элемента заняли свои места |
4 | 3 |
|
|
|
|
| 5 | 3 |
|
| 3-ий проход (k=3, i=1..2) |
4 | 5 | 3 | 2 | 1 | Массив после 3-го прохода. |
5 | 4 |
|
|
| 4-ый проход (k=4, i=1) |
5 | 4 | 3 | 2 | 1 | Сортировка массива завершена. |
Для 5-ти элементов массива понадобилось четыре прохода (т.е. N-1). При этом номер левого элемента в пара от прохода к проходу менялся от 1 доN-K(где К –номер прохода). Исходя, из этого напишем текст процедуры сортировки массива по убыванию элементов:
(Имя файлa: Sort_Dec.pas)
Procedure Sort_Dec(Var aa:Massive);
Var ii,kk:byte;
Begin
For kk:=1 to n-1 Do Begin
For ii:=1 to n-kk Do Begin
If (aa[ii]<aa[ii+1]) Then Begin
Swap (aa[ii],a[ii+1]);
End;
End;
End;
End;
При этом предполагается, что число элементов массива N описано в программе как глобальная константа. Конечно, можно внутренний цикл завести до N-1, не связывая его с номером прохода, но тогда преподаватель обречен на лишнюю работу.
Сортировка пузырьком
Примечание. Этот вид сортировки отличается от обменной тем, что за каждый проход большого цикла захватывается различное количество элементов массива, на каждом шаге более тяжелые опускаются на одну позицию вниз, а более легкие поднимаются на одну позицию вверх. Собственно тоже самое происходит и в обменной сортировке, но там на каждом шаге большого внешнего цикла обработке подвергается весь массив. Трудоемкость пузырьковой сортировки ограничена числом N*(N-1)/2. Пузырьковая сортировка обладает свойством устойчивости.
Program Z;
uses crt;
var a:array[1..100] of integer;
i,j,n,c:integer;
begin
clrscr;
write('количество элементов массива ');
read(n);
for i:=1 to n do read(a[i]);
for i:=n-1 downto 1 do
for j:=1 to i do if a[j]>a[j+1] then begin c:=a[j];
a[j]:=a[j+1];a[j+1]:=c;
end;
for i:=1 to n do write(a[i],' ');
end.
Чем отличаются две программы?
Yandex.RTB R-A-252273-3- Министерство образования и науки рф
- Оглавление
- 6.Проверка адекватности модели 48
- 7.Анализ результатов моделирования 49
- Лекция 1 Предмет информатики. Основные составные части персонального компьютера. Понятие и представление информации. Принципы организации порядковых систем счисления.
- Понятие информатика
- Понятие информации
- Представление данных в пэвм
- Представление информации в компьютере
- Принципы организации порядковых систем счисления
- Позиционные и непозиционные
- Правила перехода из системы в систему Алгоритм перевода целых чисел из системы с основанием р в систему с основаниемq:
- Алгоритм перевода целого числа из десятичной системы счисления в систему счисления с произвольным основанием (р)
- Алгоритм перевода целого числа из системы счисления с произвольным основанием (р) в десятичную систему счисления
- Перевод дробных чисел из одной системы счисления в другую Алгоритм перевода правильной дроби с основанием р в дробь с основаниемq
- Алгоритм перевода числа, заданного в виде правильной дроби из десятичной системы счисления в систему счисления с основание р.
- Алгоритм перевода произвольных чисел
- Перевод чисел из системы счисления с основанием 2 в систему счисления с основанием 2п и обратно Алгоритм перевода целых чисел
- Алгоритм перевода дробных чисел
- Алгоритм перевода произвольных чисел
- Лекция 2
- Арифметические и логические операции. Приоритет операций.
- Логические основы.
- Основы логики
- Обозначения для логических связок (операций):
- Логические операции
- Логические операции и таблицы истинности
- Порядок выполнения логических операций в сложном логическом выражении
- Построение таблиц истинности для сложных выражений
- Скнф и сднф
- Алгоритмы получения формулы по таблице истинности сднф и скнф
- Правила упрощения логических структур
- Приоритет арифметико-логических операций
- Лекция 3 Основные составные части пк. Файлы и файловые системы эвм. Операционные системы. Поколения эвм
- Структура пк
- Достоинствами пк
- Основные характеристики пк
- Устройство пк
- Основные устройства системного блока
- Типы процессоров
- Внешняя (долговременная) память
- Внешние устройства (устройства для ввода-вывода информации)
- Файлы и файловые системы
- Типы файлов
- Операционная система (ос)
- Лекция 4
- Основные понятия моделирования
- Основные виды моделей и их свойства
- 1.Основные виды моделей
- 2.Основные свойства моделей
- Цели, принципы и технология моделирования
- 1.Цели моделирования
- 2.Основные принципы моделирования
- 3.Технология моделирования
- 4.Основные методы решения задач моделирования
- 5.Контроль правильности модели
- Задачи моделирования
- 1.Постановка задачи моделирования
- 2.Концептуальная формулировка задачи
- 3.Построение математической модели
- 4.Выбор метода решения
- 5.Программная реализация модели на эвм
- 6.Проверка адекватности модели
- 7.Анализ результатов моделирования
- Алгоритмизация и программирование Понятие алгоритма
- Свойства алгоритма
- Формы записи алгоритмов
- Типы алгоритмов
- Методология решения задач с помощью эвм
- Классификация программных средств
- Лекция 5 Данные в языке Turbo-Pascal7.0. Стандартные функции языкаTurbo-Pascal. Структура программы на языке Турбо Паскаль. ОператорыTurbo-Pascal. Программирование линейных алгоритмов.
- Достоинствами языка Паскаль являются:
- Алфавит языка
- Данные – это простейшие объекты программной обработки.
- Характеристики основных типов данных
- Стандартные функции языка Турбо-Паскаль
- Нестандартные функции
- Структура программы на языке Турбо Паскаль
- Оператор присваивания имеет следующую структуру:
- Стандарты ввода – вывода данных
- Составной оператор
- Программирование линейных алгоритмов
- Лекция 6
- Процедуры Procedure
- Условные операторы
- Оператор ‘if-then’
- Оператор ‘if-then-else’
- Тройное ветвление
- Оператор варианта ‘case…of’
- Лекция 7 Циклические структуры. Вложенные циклы. Рекурсивные функции. Операторы прерывания.
- Определенные циклы ‘for…do…’
- Первая форма записи оператора foRс последовательным увеличением счетчика.
- Вторая форма записи оператора foRcуменьшением счетчика:
- Циклы с постусловием ‘repeat…until…’
- Циклы с предусловием ‘while…do…’
- Вложенные циклы
- Рекурсивные функции
- Операторы прерывания Операторы Break и Continue
- Лекция 8 Обработка одномерных и двумерных массивов Понятие и описание массива
- Примеры одномерного, двухмерного, трехмерного массивов
- Способы ввода одномерных массивов:
- Печать массива
- Локальная обработка массива
- Глобальная обработка массива
- Инверсия
- Циклический сдвиг
- Вычисление среднее арифметическое, среднее геометрическое, среднее квадратичное среднее гармоническое
- Сортировка массива
- Сортировка одномерного массива методом пузырька
- Пример. Сортировка обменом по возрастанию массива a из n целых чисел.
- Обработка двумерных массивов
- Литература Основная литература
- Дополнительная литература