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的回答是正確的。 –