DAA - пузырьковая сортировка

Bubble Sort - это элементарный алгоритм сортировки, который работает путем многократного обмена смежными элементами, если это необходимо. Когда обмены не требуются, файл сортируется.

Это самый простой метод среди всех алгоритмов сортировки.

 Algorithm: Sequential-Bubble-Sort (A) 
fori← 1 to length [A] do 
for j ← length [A] down-to i +1 do 
   if A[A] < A[j - 1] then 
      Exchange A[j] ↔ A[j-1] 

Реализация

voidbubbleSort(int numbers[], intarray_size) { 
   inti, j, temp; 
   for (i = (array_size - 1); i >= 0; i--) 
   for (j = 1; j <= i; j++) 
      if (numbers[j - 1] > numbers[j]) { 
         temp = numbers[j-1]; 
         numbers[j - 1] = numbers[j]; 
         numbers[j] = temp; 
      } 
} 

Анализ

Здесь количество сравнений

1 + 2 + 3 + ... + ( n - 1) = n ( n - 1) / 2 = O ( n 2 )

Ясно, что график показывает характер n 2 типа пузырьков.

В этом алгоритме число сравнений не зависит от набора данных, т. Е. Находятся ли предоставленные входные элементы в отсортированном порядке или в обратном порядке или в случайном порядке.

Требование к памяти

Из алгоритма, изложенного выше, ясно, что сортировка пузырьков не требует дополнительной памяти.

пример

Несортированный список:

5 2 1 4 3 7 6

1- я итерация:

5> 2 своп

2 5 1 4 3 7 6

5> 1 своп

2 1 5 4 3 7 6

5> 4 своп

2 1 4 5 3 7 6

5> 3 своп

2 1 4 3 5 7 6

5 <7 без обмена

2 1 4 3 5 7 6

Своп 7> 6

2 1 4 3 5 6 7

2- я итерация:

2> 1 своп

1 2 4 3 5 6 7

2 <4 без обмена

1 2 4 3 5 6 7

Своп 4> 3

1 2 3 4 5 6 7

4 <5 без обмена

1 2 3 4 5 6 7

5 <6 без обмена

1 2 3 4 5 6 7

Нет изменений в 3- й , 4- й , 5- й и 6- й итерации.

В заключение,

отсортированный список

1 2 3 4 5 6 7