Конечное значение параметра цикла n-i убирает лишние перестановки по j В операторе цикла
Begin
BEGIN
Пример 1.
Сортировка одномерного массива (по возрастанию).
Program SORTIROVKA_1;
uses crt;
CONST A:array[1..5] of integer=(5,4,1,3,2);
n=5;
VAR i, j, k, m, buf: integer;
for i:=1 to n-1 do { можно to n do}
for j:=1 to n-1 do { можно to n-i do}
if a[j] >a[j+1] then
buf:=a[j+1];
a[j+1]:=a[j];
a[j]:=buf;
end;
for i:=1 to 5 do
write(a[i],);
writeln;
массив A=(5, 4, 1, 3, 2);
i=1 j=1 5>4 да 4, 5, 1, 3, 2
j=2 5>1 да 4, 1, 5, 3, 2
j=3 5>3 да 4, 1, 3, 5, 2
j=4 5>2 да 4, 1, 3, 2, 5 {за один проход выдавили вправо макс=5}
i=2 j=1 4>1 да 1, 4, 3, 2, 5
j=2 4>3 да 1, 3, 4, 2, 5
j=3 4>2 да 1, 3, 2, 4, 5
** j=4 4>5 нет 1, 3, 2, 4, 5 нет смены эл-тов
i=3 j=1 1>3 нет 1, 3, 2, 4, 5
j=2 3>2 да 1, 2, 3, 4, 5
** j=3 3>4 нет 1, 2, 3, 4, 5 больше
** j=4 4>5 нет 1, 2, 3, 4, 5 смен нет
i=4 j=1 нет
j=2 нет это уже лишние j=3 нет прогоны
j=4 нет
Примечание:
for j:=1 to n-i do
(сравните со случаем, когда for j:=1 to n-1 do).
. Модифицированный метод "Пузырька"
Дата добавления: 2014-01-20 ; Просмотров: 395 ; Нарушение авторских прав? ; Мы поможем в написании вашей работы!
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет