과 같은 벡터를 반환 함 최근에 나는 R
을 사용하기 시작했으며 quicksort를 구현하는 연습으로 사용하고 있습니다. "Introduction to Algorithms (3rd ed)"책을 사용하고 있습니다.Quicksort가
나는 RStudio
을 사용하고 있으며 오류는 보이지 않지만 전달 된 것과 동일한 벡터를 반환합니다. 내 코드가 책의 의사 코드와 일치한다고 생각합니다. 들의 유사 코드는 다음과 같다 :
R
에서 같은 두 가지 기능을 썼다 I보다
Partition(A, p, r)
x = A[r]
i = p - 1
for j = p to r - 1
if A[j] <= x
i = i + 1
swap(A[i], A[j])
swap(A[i+1], A[r]
return i + 1
Quicksort(A, p, r)
if p < r
q = Partition(A, p, r)
Quicksort(A, p, q - 1)
Quicksort(A, q + 1, r)
: RStudio
에서
partition <- function(a, p, r) {
x = a[r]
i = p - 1
for (j in p:(r-1)) {
if (a[j] <= x) {
i = i + 1
t = a[i]
a[i] = a[j]
a[j] = t
}
}
t = a[i+1]
a[i+1] = a[r]
a[r] = t
i+1
}
quicksort <- function(a, p, r) {
if (p < r) {
q = partition(a, p, r)
quicksort(a, p, q-1)
quicksort(a, q+1, r)
}
a
}
, 내가 파일을 소스와 내가 만든 벡터로 전화 :
> v
[1] 8 5 6 7 4 1 3 2
> quicksort(v, 1, length(v))
[1] 8 5 6 7 4 1 3 2
지금까지 내가 R에서 재귀 함수를 수행 할 수 있다는 것을 읽었을 때 참조로 전달할 수 없다는 것을 알고 있지만이 함수는 변경된 벡터? 나는 왜 그것이 같은 벡터를 반환하는지에 관해 혼란 스럽다. 어떤 도움을 주시면 감사하겠습니다.
참조로 패스의 부족은 재귀 호출을 사용 A''변경할 수 없음을 의미합니다. – merlin2011