## Exercises from Chapter 10

### Rite of Passage: Sorting

How you could do it:

 `​def​ sort arr` ` rec_sort arr, []` `​end​` `​def​ rec_sort unsorted, sorted` ` ​if​ unsorted.length <= 0` ` ​return​ sorted` ` ​end​` ` ​# So if we got here, then it means we still​` ` ​# have work to do.​` ` smallest = unsorted.pop` ` still_unsorted = []` ` unsorted.each ​do​ |tested_object|` ` ​if​ tested_object < smallest` ` still_unsorted.push smallest` ` smallest = tested_object` ` ​else​` ` still_unsorted.push tested_object` ` ​end​` ` ​end​` ` ​# Now "smallest" really does point to the​` ` ​# smallest element that "unsorted" contained,​` ` ​# and all the rest of it is in "still_unsorted".​` ` sorted.push smallest` ` rec_sort still_unsorted, sorted` `​end​` `puts(sort([​'can'​,​'feel'​,​'singing'​,​'like'​,​'a'​,​'can'​]))`
 `a` `can` `can` `feel` `like ...`

Get Learn to Program, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.