БЕСПЛАТНОЕ РЕШЕНИЕ ЗАДАЧ

Пузырьковая сортировка - сортировка обменом

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

Дано n чисел, которые необходимо расположить по возрастанию.

Алгоритм пузырьковой сортировки:

1) числа сравниваются попарно: первое со вторым; второе с третьим; i-тое – с (i+1) - тым;

2) если меньшее стоит в паре на втором месте (числа в паре не упорядочены по возрастанию), то сравниваемые числа меняются местами.

За один просмотр минимальное число "вытолкнется", по крайней мере, на одно место вперед, а максимальное – переместится в самый конец, т.е. минимальное число как легкий пузырек воздуха в жидкости постепенно "всплывает" в начало последовательности. Отсюда– название метода. За n-1 просмотр произойдет полное упорядочение массива при любом исходном расположении чисел в н

Пример. Пузырьковая сортировка

Program Sort;
Const
Nmax = 100;
Var
X : Array [1..Nmax] Of Real;
A : Real;
n, k, i : Integer;

Begin
Writeln('Введите количество чисел');
Readln(n);
Writeln('Введите массив чисел');
For i := 1 To n Do
Read (X[i]);
{ Сортировка }
For k := 1 To n-1 Do
For i := 1 To n-1 Do
If X[i] > X[i+1] Then
Begin
A:=X[i];
X[i]:=X[i+1];
X[i+1]:=A
End;
Writeln('Отсортированный массив чисел:');
For i:=1 To n Do
Write (X[i]);
End.
Пример. Ускоренная пузырьковая сортировка
Program SortUsk;
Const
Nmax = 100;
Var
X : Array [1..Nmax] Of Real;
A : Real;
P : Boolean;
L, K, I, N : Integer;
Begin
Writeln('Введите количество чисел');
Readln(n);
Writeln('Введите массив чисел');
For i := 1 To n Do
Read(X[i]);
P := True; {Перестановка есть}
K := 1; {Номер просмотра}
While P Do
Begin
L:=0; {Кол. перестановок}
For i := 1 To n-k Do
If X[i] > X[i+1] Then
Begin
A := X[i];
X[i]:=X[i+1];
X[i+1]:=A;
L:=L+1
End;
If L=0 Then
P:=False;
k:=k+1;
End;
Writeln('Отсортированный массив чисел');
For i := 1 To n Do
Write(X[i]);
End.

Оставить комментарий

Вы должны быть авторизованы , чтобы оставить или оценить комментарий.

Онлайн всего: 218
Гостей: 218
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте