Quicksort를 사용하여 정수를 스택의 항목으로 표시된 집합의 요소로 정렬합니다. 이미 정렬 된 큰 (약 10,000 요소) 집합을 정렬해야 할 때를 제외하고는 아무 문제가 없습니다.큰 정렬 된 배열에 대한 quicksort의 문제점
: adswap \ ad1 ad2 --
over @ over @ swap rot ! swap ! ;
: singlepart \ ad1 ad2 -- ad
tuck 2dup @ locals| p ad | swap \ ad2 ad2 ad1
do i @ p < \ ad2 flag
if ad i adswap ad cell + to ad then cell \ ad2 cell
+loop ad adswap ad ; \ ad
: qsort \ ad1 ad2 -- pointing on first and last cell in array
2dup <
if 2dup singlepart >r
swap [email protected] cell - recurse
r> cell + swap recurse
else 2drop
then ;
리턴 스택에서 오버플로가 될 수 있습니까? 배열이 정렬되거나 정렬되지 않을 때 프로그램이 계속 추적하는 것이 사실상 불가능합니다. 그래서 문제를 해결하는 방법은 무엇입니까?
당신이 ruvim 감사합니다
는
qsort
정의를 업데이트! BigZ는 http://forthmath.blogspot.se/에서 귀하의 도움없이 무엇이됩니까? – Lehs