Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :: ********** 14. insertion-sort **********
- |= to-sort=(list @)
- =/ sorted=(list @) ~
- |-
- ?~ to-sort :: if nothing left to sort
- sorted :: return sorted list
- ?~ sorted :: if sorted is empty list
- $(sorted [i.to-sort sorted], to-sort ^-((list @) t.to-sort)) :: recurse w to-sort[0] removed, inserted into sorted
- ?: (lte i.to-sort i.sorted) :: if to-sort[0] <= sorted[0]
- $(sorted [i.to-sort sorted], to-sort t.to-sort) :: prepend to-sort[0] to sorted[0]
- :: Else, item to sort needs to be compared to next item in the sorted list and checked until it finds position
- |-
- =/ inner-sorted=(list @) sorted :: creating a copy of sorted for inner loop so doesn't change in outer
- ?: (lte i.to-sort i.inner-sorted)
- [i.to-sort inner-sorted]
- ?~ t.inner-sorted
- [i.inner-sorted i.to-sort t.inner-sorted]
- (sorted [i.inner-sorted $(inner-sorted t.inner-sorted)], to-sort t.to-sort)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement