Skip to content

Commit 5b29b3d

Browse files
authored
Merge pull request kelvins#314 from izumigoto/main
added mergesort for kotlin
2 parents d0d829b + 5297a2a commit 5b29b3d

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3194,9 +3194,9 @@ In order to achieve greater coverage and encourage more people to contribute to
31943194
<img align="center" height="25" src="./logos/github.svg" />
31953195
</a>
31963196
</td>
3197-
<td> <!-- Kotlin -->
3198-
<a href="./CONTRIBUTING.md">
3199-
<img align="center" height="25" src="./logos/github.svg" />
3197+
<td> <!-- kotlin -->
3198+
<a href="./src/kotlin/MergeSort.kt">
3199+
<img align="center" height="25" src="./logos/kotlin.svg" />
32003200
</a>
32013201
</td>
32023202
</tr>

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)