Sorting algorithms/Tree sort on a linked list: Difference between revisions
Content added Content deleted
(Improve task or delete it.) |
|||
Line 151: | Line 151: | ||
5 3 7 9 1 -> 1 3 5 7 9 |
5 3 7 9 1 -> 1 3 5 7 9 |
||
d c e b a -> a b c d e |
d c e b a -> a b c d e |
||
</pre> |
|||
=={{header|Phix}}== |
|||
{{trans|Kotlin}} |
|||
<lang Phix>enum KEY,LEFT,RIGHT |
|||
function tree_insert(object node, item) |
|||
if node=NULL then |
|||
node = {item,NULL,NULL} |
|||
elsif item<node[KEY] then |
|||
node[LEFT] = tree_insert(node[LEFT],item) |
|||
else |
|||
node[RIGHT] = tree_insert(node[RIGHT],item) |
|||
end if |
|||
return node |
|||
end function |
|||
function inOrder(object node) |
|||
sequence res = {} |
|||
if node!=NULL then |
|||
res = inOrder(node[LEFT]) |
|||
res &= node[KEY] |
|||
res &= inOrder(node[RIGHT]) |
|||
end if |
|||
return res |
|||
end function |
|||
procedure treeSort(sequence s) |
|||
object tree = NULL |
|||
for i=1 to length(s) do tree = tree_insert(tree,s[i]) end for |
|||
pp({s," => ",inOrder(tree)}) |
|||
end procedure |
|||
treeSort({5, 3, 7, 9, 1}) |
|||
treeSort("dceba")</lang> |
|||
{{out}} |
|||
<pre> |
|||
{{5,3,7,9,1}, " => ", {1,3,5,7,9}} |
|||
{"dceba", " => ", "abcde"} |
|||
</pre> |
</pre> |
||