1
我在rstudio通过豪尔分区工作快速排序。我发现一些代码http://rosettacode.org/wiki/Sorting_algorithms/Quicksort#Julia 他们使用Julia我测试他们,他们工作正常。但是当我将它们翻译成r.script时,排序编程不起作用。 (我也翻译他们在python和程序工作,所以我想代码是正确的)。我试图解决A = [ - 3,3,-4,2,0],R中的代码如下:快速排序通过豪尔分区在r
quicksort = function (A,i,j) {
if (j>i){
pivot = A[i]
left=i
right=j
while (left <= right) {
while (A[left] < pivot) {
left=left+1
}
while (A[right] > pivot) {
right=right-1
}
if (left <= right){
temp=A[left]
A[left]=A[right]
A[right]=temp
left=left+1
right=right-1
}
}
quicksort(A,i,right)
quicksort(A,left,j)
}
return (A)
}
我得到了排序结果为[-4,3,-3,2, 0],程序似乎只是跳过递归部分,只进行一次排序。任何人都可以告诉我为什么它不适用于r?
这更是一个代码狩猎运动,但你的问题似乎是在这里:'支点= A [1]'...'而(A [left]
lmo
与Julia或Python不同,R按值传递所有基元(包括数组)。所以这个功能不是就地的,不像Julia版本。 @CactusWoman的回答是正确的。 –