1
運行快速排序的痕跡在序言中對快速排序代碼:我如何畫一個圖中的Prolog
gt(X,Y):- X @> Y.
conc([], List, List).
conc([Head|Tail], List1, [Head|List2]):- conc(Tail, List1, List2).
quicksort([], []).
quicksort([X|Tail], Sorted):-
split(X,Tail,Small,Big),
quicksort(Small,SortedSmall),
quicksort(Big, SortedBig),
conc(SortedSmall, [X|SortedBig], Sorted).
split(X,[],[],[]).
split(X,[Y|Tail],[Y|Small],Big):-
gt(X,Y),!,
split(X,Tail,Small, Big).
split(X,[Y|Tail],Small,[Y|Big]):-
split(X,Tail,Small,Big).
的例子是quicksort([3,2,4,1,5], Sorted)
。 我已經幾乎畫出這一個,但我只找到一個Small=[2, 1]
列表的跟蹤,然後我不會做同樣的Big
號碼列表。 有沒有人可以幫我畫這個代碼的圖表?我想了解程序的運行軌跡。 我真的很感激!