Я использую Quicksort для сортировки целых чисел, являющихся элементами в наборах, представленных элементами в стеке. Он работает нормально, за исключением случаев, когда ему приходится сортировать более крупные (около 10000 элементов), которые уже сортируются.Проблемы с быстрой сортировкой в Forth для больших отсортированных массивов
: 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 ;
Может быть переполнение в стеке возврата? Программа практически не отслеживается при сортировке массива или нет, поэтому как решить проблему?
Спасибо вам Рувим! Что будет с BigZ на http://forthmath.blogspot.se/ без вашей помощи? – Lehs