Быстрая сортировка на Kotlin
Идея алгоритма
1)Выбирается опорный элемент — им может быть любой элемент массива (я в качестве опорного выбираю средний элемент массива).
2)Все остальные элементы массива сравниваются с опорным и те, которые
меньше него, ставятся слева от него, а которые больше или равны —
справа.
3)Для двух получившихся блоков массива (меньше опорного, и больше либо
равны опорному) производится точно такая же операция — выделяется
опорный элемент и всё идёт точно так же, пока в блоке не останется один
элемент.
Решил написать этот пост так как наболело. Сейчас читаю Грокаем алгоритмы, Адитья Бхаргава . А там этот алгоритм реализован на Python, ну и выглядит он классно и лаконично. Бросил себе вызов и написал на Kotlin в том же духе.
Красота же?😂
Идея алгоритма
1)Выбирается опорный элемент — им может быть любой элемент массива (я в качестве опорного выбираю средний элемент массива).
2)Все остальные элементы массива сравниваются с опорным и те, которые
меньше него, ставятся слева от него, а которые больше или равны —
справа.
3)Для двух получившихся блоков массива (меньше опорного, и больше либо
равны опорному) производится точно такая же операция — выделяется
опорный элемент и всё идёт точно так же, пока в блоке не останется один
элемент.
Решил написать этот пост так как наболело. Сейчас читаю Грокаем алгоритмы, Адитья Бхаргава . А там этот алгоритм реализован на Python, ну и выглядит он классно и лаконично. Бросил себе вызов и написал на Kotlin в том же духе.
Красота же?😂
Подсчёт суммы элементов массива через Рекурсию
Вообще эта задача тоже меня напрягла, расстроил тот факт, что в Kotlin нельзя получить срез массива, как в Python...
В Python чтобы получить список элементов массива без самого первого элемента можно написать вот так:
list[1:]
В Kotlin есть несколько вариантов:
list.takeLast(list.size - 1)
list.stream().skip(1).toList()
Не отрицаю, что есть ещё другие способы, это первое что пришло в голову.
P.S. Вообще это не повод уходить в Python, есть множество других классных концепций за которые я полюбил Kotlin
Вообще эта задача тоже меня напрягла, расстроил тот факт, что в Kotlin нельзя получить срез массива, как в Python...
В Python чтобы получить список элементов массива без самого первого элемента можно написать вот так:
list[1:]
В Kotlin есть несколько вариантов:
list.takeLast(list.size - 1)
list.stream().skip(1).toList()
Не отрицаю, что есть ещё другие способы, это первое что пришло в голову.
P.S. Вообще это не повод уходить в Python, есть множество других классных концепций за которые я полюбил Kotlin
👍2