Сортировка массива

Сортировка массива

Сортировка массива методом "пузырька"

Сейчас мы поговорим о сортировки массива так называемым методом "пузырька". По другому этот метод называется методом перестановок или методом обмена. Почему метод известен как метод "пузырька", да просто потому, что при его реализации более "легкие" элементы как бы всплывают вверх. Соответственно, более тяжелые "идут ко дну", один человек, обладающий видимо хорошим чувством юмора, заметил, что по всей видимости, пессимисты называют метод пузырька методом "утопленника".

Итак, представим, что у нас есть целочисленный массив из 10 элементов и нам его необходимо отсортировать по возрастанию.

Вот код программы на Паскале: { сортировка массива "пузырьком" по возрастанию }program Sortirovka_Puxirek;
    const  n = 10; { количество элементов в массиве }
    var    a:array[1..n] of integer;
         i,j,buf:integer;
begin
    for i:=1 to n do begin
       a[i]:=random(10); write(a[i],' ');
    end;
    for i:=1 to n-1 do for j:=i+1 to n do
       if a[i]>a[j] then begin
         buf:=a[i];  a[i]:=a[j]; a[j]:=buf;
    end; writeln;
    writeln('Массив после сортировки пузырьковым методом: ');
    for i:=1 to n do write(a[i],' ');
end.

Пояснения. Как видно из текста программы на Паскале, при сортировке массива методом пузырька, сравниваются два соседних элемента массива. В том случае, если элемент массива с номером i оказывается больше элемента массива с номером i+1, происходит обмен значениями при помощи вспомогательной переменной buf (переменной я дал название со смысловой нагрузкой, от слова "буфер").
Возможные ошибки. Как показывают мои личные наблюдения, начинающие программисты постоянно наступают на одни и те же грабли. Вместо строки "for j:=i+1 to n do" они зачастую пишут "for j:=2 to n do", что хоть и приводит к обмену значениями некоторых переменных, но не дает необходимого результата.