131
правка
Изменения
→Модификации
Пояснения: Изначально расстояние между сравниваемыми элементами равно <tex> n/k </tex>, где k =1.24733 {{---}} оптимальное число для этого алгоритма. Сортируем массив по этому расстоянию, потом уменьшаем его по этому же правилу. Когда расстояние между сравниваемыми элементами достигает единицы, массив досортировывается обычным пузырьком.
'''Сортировка перемешиванием '''(англ. ''cocktail sort''), также известная как '''Шейкерная сортировка''' {{---}} разновидность пузырьковой сортировки, сортирующая массив в 2 направлениях на каждой итерации. В среднем, сортировка перемешиванием работает в 2 раза быстрее пузырька. Сложность {{---}} <tex> O(n^2) </tex>, но стремится она к <tex> O(k*n) </tex>, где k {{---}} максимальное расстояние элемента в неотсортированном массиве от его позиции в отсортированном массиве.Псевдокод указан ниже: Shakersort: count=0 for (int i = 0; i < n/2; i++) beg = 0; end = n - 1; while beg<=end do count += 2 if a[beg] >a[beg + 1] Swap(a[beg],a[beg+1]); beg++ if a[end-1] > a[end] Swap(a[end - 1], a[end]); end--;
== См. также ==