Сортировка 
элементов массива

 

Простая обменная сортировка (в просторечии называемая "методом пузырька") для массива a[1], a[2], ..., a[n] работает следующим образом. Начиная с конца массива сравниваются два соседних элемента (a[n] и a[n-1]). Если выполняется условие a[n-1] > a[n], то значения элементов меняются местами. Процесс продолжается для a[n-1] и a[n-2] и т.д., пока не будет произведено сравнение a[2] и a[1]. Понятно, что после этого на месте a[1] окажется элемент массива с наименьшим значением. На втором шаге процесс повторяется, но последними сравниваются a[3] и a[2]. И так далее. На последнем шаге будут сравниваться только текущие значения a[n] и a[n-1]. Понятна аналогия с пузырьком, поскольку наименьшие элементы (самые "легкие") постепенно "всплывают" к верхней границе массива. Пример сортировки методом пузырька показан в таблице.

 

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

 

Начальное состояние массива

8  23  5   65  44  33  1   6

Шаг 1

8  23  5   65  44  33  1   6

8  23  5   65  44  1   33  6

8  23  5   65  1   44  33  6

8  23  5   1   65  44  33  6

8  23  1   5   65  44  33  6

8  1   23  5   65  44  33  6

1  8   23  5   65  44  33  6

Шаг 2

1  8   23  5   65  44  6   33

1  8   23  5   65  6   44  33

1  8   23  5   6   65  44  33

1  8   23  5   6   65  44  33

1  8   5   23  6   65  44  33

1  5   8   23  6   65  44  33

Шаг 3

1  5   8   23  6   65  33  44

1  5   8   23  6   33  65  44

1  5   8   23  6   33  65  44

1  5   8   6   23  33  65  44

1  5   6   8   23  33  65  44

Шаг 4

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

Шаг 5

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

Шаг 6

1  5   6   8   23  33  44  65

1  5   6   8   23  33  44  65

Шаг 7

1  5   6   8   23  33  44  65

 

 

           Число  сравнений  в  строго  обменном  алгоритме 

                                                                 C = (n2 n)/2,             

а  минимальное, среднее  и  максимальное  число  перемещений  элементов  (присваиваний)  равно  соответственно

M = 0,   Mavg = 3*(n2 – n)/2,   Mmax = 3*(n2 – n)/4     

 

   "Пузырьковая" сортировка имеет очень плохие временные характеристики. Она имеет только учебно-исторический интерес и не может быть рекомендована для практического использования.

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

 

Презентация Процедура Блок-схема Решение задач 

 

 

В содержание

Hosted by uCoz