Виды алгоритмов сортировки Сортировка пузырьком / Bubble sort



бет11/12
Дата16.10.2023
өлшемі121,16 Kb.
#115872
1   ...   4   5   6   7   8   9   10   11   12
Байланысты:
Виды алгоритмов сортировки

Пример реализации на С++:



Сложность

Лучшее

Среднее

Худшее

Время

Ω(n+k)

θ(n+k)

O(n2)

Память



O(1)

  • k - количество блоков.



Поразрядная (цифровая) сортировка / Radix sort
Поразрядная сортировка - это алгоритм, который использует внутреннюю структуру сортируемых объектов.
Перед началом сортировки необходимо знать:

  • length - максимальное количество разрядов в сортируемых величинах (например, при сортировке слов необходимо знать максимальное количество букв в слове);

  • rang количество возможных значений одного разряда (при сортировке слов – количество букв в алфавите).

Общая идея алгоритма:

  • Создаём пустые массивы, количество которых равно rang.

  • Распределяем исходные значения по этим массивам. Распределение осуществляется по значению младшего (крайнего) разряда.

  • Соединяем значения в той последовательности, в которой они находятся после распределения по спискам.

  • Повторяем шаги 1-2 для оставшихся разрядов.

Пример реализации на Kotlin:
fun radixSort(original: IntArray): IntArray {
var old = original
for (shift in 31 downTo 0) {
val tmp = IntArray(old.size)
var j = 0

for (i in 0 until old.size) {


val move = (old[i] shl shift) >= 0
val toBeMoved = if (shift == 0) !move else move

if (toBeMoved)


tmp[j++] = old[i]
else {
old[i - j] = old[i]
}
}
for (i in j until tmp.size) tmp[i] = old[i - j]
old = tmp
}
return old
}


Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   12




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет