在Kotlin中进行合并排序时会出现一个奇怪的情况

当我做合并排序时,我发现有一些奇怪的事情发生,我不知道为什么。 由于我对Kotlin不太熟悉,我不知道这个问题是我的逻辑还是Kotlin语法。 需要帮忙。

这是代码。 这个版本的作品。

fun runMergeSort(anArray:IntArray,n:Int){ mergeSort(anArray,0,n-1) } fun mergeSort(intArray: IntArray,left:Int,right:Int){ if(left<right){ val mid = (left+right)/2 mergeSort(intArray,left,mid) mergeSort(intArray,mid+1,right) merge(intArray,left,mid,right) } } fun merge(intArray:IntArray,left:Int,mid:Int,right:Int){ val aux = IntArray(right-left+1) for(i in left..right){ aux[i-left] = intArray[i] } var i = left var j = mid+1 for(k in left..right){ if(i>mid){ intArray[k] = aux[j-left] j++ } else if (j>right){ intArray[k] = aux[i-left] i++ } else if(aux[i-left]<aux[j-left]){ intArray[k] = aux[i-left] i++ } else{ intArray[k] = aux[j-left] j++ } } } fun main(args: Array<String>) { val anArray = intArrayOf(7,5,2,5,11,3,6,8) runMergeSort(anArray,anArray.size) for(i in anArray) print("$i ") } 

但是,当我将函数mergeSort更改为下面

 fun mergeSort(intArray: IntArray,left:Int,right:Int){ if(right>=left) return val mid = (left+right)/2 mergeSort(intArray,left,mid) mergeSort(intArray,mid+1,right) merge(intArray,left,mid,right) } 

我无法排序数组。 不知道该怎么办…

相当于

 if (left < right) { /* do something */ } 

 if (left >= right) return /* do something */ 

在你的示例不起作用,你使用right >= left 。 将其更改为left >= right