Merge Sort

Run Settings
LanguageKotlin
Language Version
Run Command
class MergeSort { fun mergeSort(array: List<Int>): List<Int> { if (array.size == 1) { return array } val left = array.subList(0, array.size / 2) val right = array.subList(array.size / 2, array.size) return merge(mergeSort(left), mergeSort(right)) } private fun merge(left: List<Int>, right: List<Int>): List<Int> { val result = ArrayList<Int>() var leftIndex = 0 var rightIndex = 0 while (leftIndex < left.size && rightIndex < right.size) { if (left[leftIndex] < right[rightIndex]) { result.add(left[leftIndex]) leftIndex++ } else { result.add(right[rightIndex]) rightIndex++ } } val leftRemaining = left.subList(leftIndex, left.size) val rightRemaining = right.subList(rightIndex, right.size) result.addAll(leftRemaining) result.addAll(rightRemaining) return result } } fun main() { val mergeSort = MergeSort() val numbers = ArrayList(listOf(99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0)) println(mergeSort.mergeSort(numbers)) }
Editor Settings
Theme
Key bindings
Full width
Lines