fork download
  1. fun merge(array: MutableList<Int>, left: Int, right: Int, division: Int) {
  2. val mergedLength = right - left
  3. val merged = Array<Int>(mergedLength){0}
  4. var index1 = left
  5. var index2 = division
  6.  
  7. for(i in 0 until mergedLength) {
  8. if(index1 >= division) {
  9. merged[i] = array[index2]
  10. index2++
  11. } else if(index2 >= right) {
  12. merged[i] = array[index1]
  13. index1++
  14. } else if(array[index1] <= array[index2]) {
  15. merged[i] = array[index1]
  16. index1++
  17. } else {
  18. merged[i] = array[index2]
  19. index2++
  20. }
  21. }
  22.  
  23. for(i in left until right) {
  24. array[i] = merged[i - left]
  25. }
  26. }
  27.  
  28. fun mergeSort(array: MutableList<Int>, left: Int, right: Int) {
  29. if(right - left <= 1) {
  30. return;
  31. }
  32.  
  33. val division = (left + right) / 2
  34. mergeSort(array, left, division)
  35. mergeSort(array, division, right)
  36.  
  37. merge(array, left, right, division)
  38. }
  39.  
  40. fun main() {
  41. val array = mutableListOf(7, 3, 0, 1, 5, 2, 5, 19, 10, 5)
  42.  
  43. mergeSort(array, 0, array.count())
  44.  
  45. println(array)
  46. }
Success #stdin #stdout 0.09s 39544KB
stdin
Standard input is empty
stdout
[0, 1, 2, 3, 5, 5, 5, 7, 10, 19]