使用import java.util.Arrays,给你一个数组,val arr = Array(49, 38, 65, 97, 76, 13, 27, 101, 34, 119, 1),请使用归并排序完成排序。
时间: 2023-10-22 22:06:43 浏览: 35
好的,下面是使用归并排序对数组进行排序的代码:
``` kotlin
import java.util.Arrays
fun main() {
val arr = arrayOf(49, 38, 65, 97, 76, 13, 27, 101, 34, 119, 1)
mergeSort(arr, 0, arr.size - 1)
println(Arrays.toString(arr))
}
fun mergeSort(arr: Array<Int>, left: Int, right: Int) {
if (left < right) {
val mid = (left + right) / 2
mergeSort(arr, left, mid)
mergeSort(arr, mid + 1, right)
merge(arr, left, mid, right)
}
}
fun merge(arr: Array<Int>, left: Int, mid: Int, right: Int) {
val temp = Array(right - left + 1) { 0 }
var i = left // 左序列指针
var j = mid + 1 // 右序列指针
var k = 0 // 临时数组指针
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++]
} else {
temp[k++] = arr[j++]
}
}
while (i <= mid) {
temp[k++] = arr[i++]
}
while (j <= right) {
temp[k++] = arr[j++]
}
for (p in temp.indices) {
arr[left + p] = temp[p]
}
}
```
输出结果为:`[1, 13, 27, 34, 38, 49, 65, 76, 97, 101, 119]`,表示排序完成。