Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф. технологии_1.doc
Скачиваний:
21
Добавлен:
29.03.2015
Размер:
1.17 Mб
Скачать

Результат работы :

Bведите элементы массива :

7654098321

Отсортированный массив :

0123456789

5.2.2.5.3. Сортировка обменом («пузырьковая сортировка»)

Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются. Далее берутся два следующих соседних элемента и так далее до конца массива. После одного такого прохода на последний n-ой позиции массива будет стоять максимальный элемент («всплыл первый пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1 элемента. И так далее. Всего требуется n-1 проход.

1шаг:

5

11

3

7

1

4

2

9

3 11

7 11 2 11 9 11

2шаг: 1 11 4 11

5

3

7

1

4

2

9

11

3 5 1 7

4 7

3 шаг: 2 7

3

5

1

4

2

7

9

11

1 5

4 5

4шаг: 2 5

3

1

4

2

5

7

9

11

1 3 2 4

5шаг:

1

3

2

4

5

7

9

11

2 3

6шаг:

1

2

3

4

5

7

9

11

7шаг:

1

2

3

4

5

7

9

11

Результат:

1

2

3

4

5

7

9

11

БЛОК – СХЕМА

I = 2

1

K = M

 1

I = I + 1

1 

R = A(K-1)

A(K-1)=A(K)

A(K) = R

K = K-1

Программа реализирующая метод обмена («пузырька»), будет иметь следующий вид:

Program Duddle Sort;

Uses Crt;

Const

N = 20; { длина массива}

Type

TVector = array 1…n of Real;

Var

Vector : Tvector;

B : Real;

i, K : Integer;

begin

ClrScr;

Writeln (‘введите элементы массива:’);

for i: = 1 to n do Read (Vector [i]); Readln;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }

for K: = n downto 2 do

{“всплывание” очередного максимального элемента}

{на К-ю позицию}

for i: = 1 to K-1 do

if Vector [i] > Vector [i+1] then

begin

B: = Vector [i];

Vector [i]: = Vector [i+1];

Vector [i+1]: = B;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }

Writeln (‘отсортированный массив:’);

For i: = 1 to n do Write (‘Vector [i]: 8 : 2’);

Writeln;

End.

Результат работы:

Bведите элементы массива:

7654098321

Отсортированный массив:

0123456789