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



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

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



Сложность

Лучшее

Среднее

Худшее

Время

Ω(n+k)

θ(n+k)

O(n + k)

Память



O(k)

  • n - размер отсортированного массива, а k - размер вспомогательного массива

Блочная (карманная, корзинная) сортировка / Bucket sort
Блочная сортировка - это алгоритм, основанный на разделении входного массива на несколько частей - блоки/сегменты - и использовании другого алгоритма для их сортировки.
Общая идея алгоритма:

  • Делим массив на блоки таким образом, чтобы элементы в каждом следующем блоке были всегда больше, чем в предыдущем.

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

  • Объединяем все блоки в один массив.

Пример реализации на Kotlin:
fun insertion_sort(arr: ArrayList) {
var n = arr.size
var i: Int
for (j in 1 until n) {
var key = arr[j]
i = j - 1
while (i >= 0 && arr[i] > key) {
arr[i + 1] = arr[i]
i--
}
arr[i + 1] = key
}
}

fun bucketSort(arr:Array) {


var n = arr.size
var bucket = Array>(n, {i-> ArrayList() } )

for(i in 0..arr.size-1) {


bucket[Math.floor(n * arr[i]).toInt()].add(arr[i])
}

for(i in 0..arr.size - 1) {


insertion_sort(bucket[i])
}

for (i in 1..arr.size - 1) {


bucket[0].addAll(bucket[i])
}


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




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

    Басты бет