## 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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.