ВУЗ:
Составители:
Процесс сортировки
0: 1 3 0 9 2 min=a[3]=0 Переставляем a[1]<->a[3]
1:
0
|3 1 9 2 min=a[3]=1 Переставляем a[2]<->a[3]
2:
0 1
|3 9 2 min=a[5]=2 Переставляем a[3]<->a[5]
3:
0 1 2
|9 3 min=a[5]=3 Переставляем a[4]<->a[5]
4:
0 1 2 3 9
Готово
Здесь знак | отделяет уже отсортированную часть массива от еще не
отсортированной.
На Turbo Pascal этот алгоритм будет выглядеть следующим образом:
Var {дополнительные переменные}
buf: integer; {через buf будем менять значения двух элементов
массива}
imin:IndexEl; {индекс минимального элемента неотсортированной
части массива}
…
Begin
…
{n-1 раз ищем минимальный элемент массива}
for i:=1 to n-1 do
begin
{Ищем минимальный элемент в несортированной
части массива (от i-го элемента)}
imin:=i; {imin - это индекс минимального элемента массива}
for j:=i+1 to n do
if A[j]<A[imin] then imin:=j;
{переставляем i-ый и imin-ый элементы}
buf:=A[i];
A[i]:=A[imin];
A[imin]:=buf;
End;
…
Задача 21. Вставить в упорядоченный по возрастанию массив новый элемент таким образом,
чтобы сохранилась упорядоченность.
Алгоритм решения задачи следующий:
1.
Ищем в массиве тот элемент, который больше вставляемого, – для
этого последовательно просматриваем все элементы, начиная с
первого.
2.
Увеличиваем длину массива на 1.
3.
После этого все элементы, стоящие правее от найденного,
включая его самого, сдвигаются вправо.
4.
На освободившуюся позицию вставляется искомый элемент.
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »