Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. :: ********** 14. insertion-sort **********
  2. |= to-sort=(list @)
  3. =/ sorted=(list @) ~
  4. |-
  5. ?~ to-sort :: if nothing left to sort
  6. sorted :: return sorted list
  7. ?~ sorted :: if sorted is empty list
  8. $(sorted [i.to-sort sorted], to-sort ^-((list @) t.to-sort)) :: recurse w to-sort[0] removed, inserted into sorted
  9. ?: (lte i.to-sort i.sorted) :: if to-sort[0] <= sorted[0]
  10. $(sorted [i.to-sort sorted], to-sort t.to-sort) :: prepend to-sort[0] to sorted[0]
  11. :: Else, item to sort needs to be compared to next item in the sorted list and checked until it finds position
  12. |-
  13. =/ inner-sorted=(list @) sorted :: creating a copy of sorted for inner loop so doesn't change in outer
  14. ?: (lte i.to-sort i.inner-sorted)
  15. [i.to-sort inner-sorted]
  16. :: if we've reached end of inner-sorted, then return list w item to sort at end
  17. ?~ t.inner-sorted
  18. [i.inner-sorted i.to-sort t.inner-sorted]
  19. :: else, recurse in this inner loop on sublist excluding the first element in the sorted list (equivalent of iter through list)
  20. (sorted [i.inner-sorted $(inner-sorted t.inner-sorted)], to-sort t.to-sort)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement