1
私はrstudioのhoareパーティションでquicksortに取り組んだ。私はhttp://rosettacode.org/wiki/Sorting_algorithms/Quicksort#Julia にいくつかのコードを見つけましたJuliaと私はそれらをテストし、彼らは正常に動作します。しかし、それらをr.scriptに翻訳すると、並べ替えプログラムが機能しません。 (私ものpythonで翻訳していますので、コードは正しいと思います)。rareのホアレパーティションによるクイックソート
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)
}
Iは、-4,3、-3,2 [として結果をソートして得た:Rのコードは次され、 - [3,3、-4,2,0] Iは、A =を分類しようとします0]、それはプログラムが単に再帰部分をスキップし、並べ替えを1回だけ行うようです。誰も私がrで動作しない理由を教えてもらえますか?
これは、コードの狩猟エクササイズ以上であったが、あなたの問題はここにあると思われる: 'ピボット= A [i]は' ... 'しばらく(A [左] <ピボット){'この[while]ループは、A [i] = A [左] =ピボットとしてトリガされることはありません。 – lmo
Rは、JuliaやPythonとは異なり、すべてのプリミティブ(配列を含む)を値で渡します。したがって、この機能はJuliaバージョンとは異なり、インプレースではありません。 @CactusWomanの答えは正しいです。 –