- •1. Структура программы.
- •2. Раздел объявлений.
- •3. Раздел исполняемых операторов.
- •4. Решение вычислительных задач.
- •5. Структура графической программы.
- •6. Графические операторы.
- •7. Решение графических задач.
- •8. Блок операторов.
- •9. Оператор ветвления.
- •10. Решение задач на ветвления.
- •11. Оператор цикла с параметром.
- •12. Решение задач на цикл с параметром.
- •13. Двойные и тройные циклы.
- •14. Решение задач на двойные циклы.
- •15. Решение задач на циклы по окружности.
- •16. Использование генератора случайных чисел.
- •17. Операции над строками.
- •18. Решение задач на обработку строк.
- •19. Функции пользователя.
- •20. Построение графиков функций.
- •21. Решение задач на построение графиков функций.
- •22. Подпрограммы.
- •23. Решение задач на подпрограммы.
- •1. Написать программу для построения изображения:
- •2. Добавьте в вашу программу следующие элементы:
- •3. Дополнительно добавьте следующие элементы.
- •24. Задача «Звездный коврик».
- •25. Понятие массива.
- •26. Объявление массивов в программе.
- •27. Заполнение одномерных массивов данными.
- •28. Решение простых задач на массивы.
- •29. Решение задач средней сложности.
- •30. Сортировка элементов массива.
- •31. Решение задач на сортировку.
- •32. Заполнение двухмерных массивов данными
- •33. Решение задач на двухмерные массивы.
30. Сортировка элементов массива.
Сортировкой называют перестановку элементов внутри массива с целью упорядочить их по возрастанию или убыванию.
Пример массива до сортировки:
5 |
7 |
-1 |
2 |
-3 |
Тот же массив после сортировки по возрастанию:
-3 |
-1 |
2 |
5 |
7 |
Сортировка методом BubbleSort (методом «пузырька»)
Это самый простой и одновременно самый медленный из методов сортировки. Суть заключается в том, что вдоль массива от его начала к концу проплывает серия «пузырьков». Каждый «пузырек» в процессе движения сравнивает два соседних элемента массива и если они стоят не по росту, то меняет их местами.
Рассмотрим на примере нашего массива:
1й «пузырек».
|
2й «пузырек».
|
3й «пузырек».
4й «пузырек».
|
Первый пузырек поставил на свое место самое большое число.
Второй пузырек поставил на свое место второе по росту число.
Третий – третье число. Четвертый – четвертое.
А пятый пузырек и не нужен, так как пятое число автоматически оказалось на своем месте.
Вывод: в общем случае когда чисел n необходимo запускать n-1 пузырек.
Обратим внимание на то, что каждый последующий пузырек проплывает вдоль массива меньшее расстояние, чем предыдущий пузырек.
1й – плыл до 4 элемента (n-1 элемент)
2й – плыл до 3 элемента (n-2 элемент)
3й – плыл до 2 элемента (n-3 элемент)
4й – плыл до 1 элемента (n-4 элемент)
Вывод: в общем случае пузырек номер k должен плыть до n-k элемента.
Проблема: как поменять местами два соседних элемента массива?
Нельзя так: a[i]:=a[i+1]; a[i+1]:=a[i]; при этом одно из чисел будет потеряно.
Зато можно так: p:=a[i]; a[i]:=a[i+1]; a[i+1]:=p; , где p некоторая вспомогательная переменная.
Фрагмент программы, который проводит сортировку по возрастанию:
For k:=1 To n-1 Do For i:=1 To n-k Do If a[i]>a[i+1] Then Begin P:=a[i]; a[i]:=a[i+1]; a[i+1]:=p; End |
k – номер пузырька i – позиция пузырька в массиве если соседние элементы не по росту, то перестановка |
WriteLn(‘Отсортированный массив:’); For i:=1 To n Do Write(a[i]:4); WriteLn; |
остальные строки – это вывод того, что получилось после сортировки |
Следует не забыть объявить в основной программе переменные k и p.