def recursive_insert(arr)
return arr if arr.size<=1
recursive_insert(arr[0,arr.size-1])
i=arr.size-1
while arr[i-1]>arr[i] and i>0
arr[i],arr[i-1] = arr[i-1],arr[i]
i-=1
end
arr
end
arr=[5,4,3,2,6,1]
x=recursive_insert(arr)
puts x.inspect
이것은 작동하지 않습니다. 나는 Ruby가 각각의 재귀 호출에 대해 내 arr
변수가 업데이트되는 것을 막는 참조 메커니즘에 의한 패스가 있다고 의심한다.재귀 삽입 정렬을 작성하려면 어떻게해야합니까?
어떻게 해결할 수 있습니까? Ruby에서 재귀 함수를 작성하는 데는 많은 어려움이 있습니다.
참고로 따라서 아니오 패스 재귀 구현이다. 배열 소팅 알고리즘이 이미 구현되어 있으므로이를 사용할 수 있습니다. 정렬 알고리즘을 구현하려는 경우 C/C++에서 직접 처리하지 않는 것이 좋습니다. 루비는 쉽고 사용하기 쉽도록 만들어졌습니다. –
@KassymDorsel 예, 파이썬과 루비 같은 스크립팅 언어는 상위 레벨의 데이터 구조와 알고리즘을 구현하는 데는 적합하지만 저수준에는 적합하지 않다고 생각합니다. 나는 상세한 구현을 위해 C를 사용하는 것을 선호한다. 난 그냥 몇 가지 데이터 구조와 고민 문제를 해결하여 루비에 대한 나의 이해를 테스트하고 싶다. 감사합니다 – zsljulius