Skip to content

Commit 4122f50

Browse files
committed
added Mergesort for kotlin
1 parent 311cf8e commit 4122f50

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3159,6 +3159,11 @@ In order to achieve greater coverage and encourage more people to contribute to
31593159
<img align="center" height="25" src="./logos/java.svg" />
31603160
</a>
31613161
</td>
3162+
<td> <!-- kotlin -->
3163+
<a href="./src/kotlin/MergeSort.kt">
3164+
<img align="center" height="25" src="./logos/kotlin.svg" />
3165+
</a>
3166+
</td>
31623167
<td> <!-- Python -->
31633168
<a href="./src/python/merge_sort.py">
31643169
<img align="center" height="25" src="./logos/python.svg" />

src/kotlin/MergeSort.kt

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
fun mergeSort(arr: IntArray): IntArray {
2+
if (arr.size <= 1) {
3+
return arr
4+
}
5+
6+
val middle = arr.size / 2
7+
val left = arr.copyOfRange(0, middle)
8+
val right = arr.copyOfRange(middle, arr.size)
9+
10+
return merge(mergeSort(left), mergeSort(right))
11+
}
12+
13+
fun merge(left: IntArray, right: IntArray): IntArray {
14+
var result = IntArray(left.size + right.size)
15+
var leftIndex = 0
16+
var rightIndex = 0
17+
var resultIndex = 0
18+
19+
while (leftIndex < left.size && rightIndex < right.size) {
20+
if (left[leftIndex] < right[rightIndex]) {
21+
result[resultIndex] = left[leftIndex]
22+
leftIndex++
23+
} else {
24+
result[resultIndex] = right[rightIndex]
25+
rightIndex++
26+
}
27+
resultIndex++
28+
}
29+
30+
while (leftIndex < left.size) {
31+
result[resultIndex] = left[leftIndex]
32+
leftIndex++
33+
resultIndex++
34+
}
35+
36+
while (rightIndex < right.size) {
37+
result[resultIndex] = right[rightIndex]
38+
rightIndex++
39+
resultIndex++
40+
}
41+
42+
return result
43+
}
44+
45+
fun main() {
46+
val arr = intArrayOf(12, 11, 13, 5, 6, 7)
47+
val sortedArray = mergeSort(arr)
48+
println("Sorted array: ${sortedArray.joinToString(", ")}")
49+
}

0 commit comments

Comments
 (0)