Пузырьковая сортировка: количество обменов - Free Pascal
Формулировка задачи:
Если можно, то с объяснениями..Помогите решить: Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.
Входные данные
На первой строке дано число N (1 ≤ N ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива различны и не превышают по модулю 109.Выходные данные
Выведите одно число – количество обменов пузырьковой сортировки.Примеры
входные данные
5 1 2 3 4 5выходные данные
0входные данные
5 5 4 3 2 1выходные данные
10Решение задачи: «Пузырьковая сортировка: количество обменов»
textual
Листинг программы
const nn=1000; type mas=array[1..nn] of longint; var i,j,n,k:integer; a:mas; tmp:longint; begin readln(n); for i:=1 to n do read(a[i]); k:=0; for i:=1 to n-1 do for j:=1 to n-i do if a[j]>a[j+1] then begin tmp:=a[j]; a[j]:=a[j+1]; a[j+1]:=tmp; inc(k) end; writeln(k) end.
Объяснение кода листинга программы
- В начале программы объявляются переменные и массив: — nn — количество элементов в массиве (1000); — mas — массив (1000) длинных целых чисел; — i, j, n, k — счётчики для выполнения алгоритма; — a — временная переменная для обмена значениями; — tmp — временная переменная;
- Далее считывается количество элементов для сортировки и сами элементы.
- Инициализируется счётчик успешных обменов k=0.
- Затем двумя вложенными циклами выполняется сортировка: — Внешний цикл (for i:=1 to n-1) — количество элементов, которые нужно переставить в нужном порядке; — Внутренний цикл (for j:=1 to n-i) — проход по элементам, которые нужно переставить; — Если текущий элемент больше следующего (if a[j]>a[j+1]), то: — Значение текущего элемента сохраняется в tmp; — Значение текущего элемента присваивается значению следующего элемента; — Значение tmp присваивается значению следующего элемента; — Увеличивается счётчик успешных обменов k.
- После выполнения сортировки выводится количество успешных обменов k.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д