Сортировка массива методом "пузырька"
 
Информатика в школе


Видео курсы для чайников фотошоп, joomla, wordpress, php, css 
  Главная  ●  Карта сайта
 
 

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

[к списку алгоритмов]

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

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

Вот код программы на Паскале:

{ сортировка массива "пузырьком" по возрастанию }
const 
  n = 10; { количество элементов в массиве }
var 
  a:array[1..n] of integer;
  i,j,buf:integer;
begin
   {Заполняем массив случайными целыми числами из диапазона от 0 до 9 и выводим массив на экран}
  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 {В этой строке начинающие программисты чаcто допускают ошибку}
      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", что хоть и приводит  к обмену значениями некоторых переменных, но не дает необходимого результата.

[к списку алгоритмов]

Книжные новинки
Как сделать свой сайт и заработать на нем Е. Мухутдинов
Копилка
Рабочие программы
Проекты MS Office
Презентации
Открытые уроки
Экзаменационные билеты
Элективные курсы
Бесплатный soft
 Инструкции по ТБ
Подготовка к олимпиадам по информатике
Методика подготовки
"Золотые" алгоритмы
Простые задачи для начинающих
Олимпиадные задачи с решениями
Книги
Среда программирования
Обучение программированию на С++
Справочник по языку Pascal
Обучение
Подготовка к ЕГЭ
Создание сайтов
Уроки FrontPage
Уроки Word 2003
Создание игр на Delphi
Печатаем вслепую

Информация

Наши интервью
Книга почета
Курсы повышения квалификации
Электронная библиотечка
Книжная полка
Статьи
Полезные ссылки
Обратная связь

Конкурсы

Олимпиада
Фотоконкурс
VIP
Персональный раздел профессора
Макаровой Н.В.
Персональный раздел профессора
Смыковской Т.К.