середу, 10 лютого 2010 р.

Сортировка обменом (“пузырьковая” сортировка)

Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих со­седних элемента и так далее до конца массива.

После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент (“всплыл” первый “пузырек”). По­скольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-гo элемента. И так далее. Всего требуется п-1 проход.

Рассмотрим схему алгоритма сортировки методом прямого обмена по неубыванию.

Сортирока пузырьком
Сортирока пузырьком

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

  1. Program BubbleSort;
  2. uses Crt;
  3. const
  4. n = 20; { длина массива }
  5. type
  6. TVector = array [l..n] of Real;
  7. var
  8. Vector : TVector;
  9. В : Real;
  10. i, k : Integer;
  11.  
  12. Begin
  13. ClrScr;
  14. Writeln ('Введите элементы массива:');
  15. for і := 1 to n do Read (Vector[i]); Readln;
  16. {-------------------------------}
  17. for к := n downto 2 do { "Всплывание" очередного максимального элемента } { на k-ю позицию }
  18. for і := 1 to k-1 do
  19. if Vector[i] > Vector[і+1] then
  20. begin
  21. В := Vector[і];
  22. Vector[i] := Vector[i+1];
  23. Vector[ і+1] := В;
  24. end;
  25. {------------------------------}
  26. Writeln('Отсортированный массив:');
  27. for і := 1 to n do Write (Vector[i]:8:2);
  28. Writeln;
  29. End.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments