Use a merging procedure constructed by merge to combine the lists
(2 3 4 7 8 10 12) and (1 6 11 13 14).
What happens if a merging procedure constructed by merge is applied
to lists that are not already in order?
What happens if a merging procedure constructed by merge is given
two empty lists as arguments? Why?
What is the value of the procedure call (split '(a b c d e f g))?
Figure it out by hand first, then use DrScheme to check your answer.
Account for any differences between DrScheme's answer and yours.
Using merge-sort, sort the strings "blanc", "noir",
"rouge", "bleu", "jaune", "vert", "gris", "brun", and "rose" into alphabetical order.
Develop a Scheme procedure that takes a vector of real numbers and
determines whether its elements are arranged in ascending numerical order,
returning #t if it is and #f if it is not.
Sometimes, instead of sorting the elements of a list, we want to sort the entries in an association list so that the keys are arranged in a particular order (without regard to the corresponding values). Let's call a procedure that takes an association list as its argument and returns another association list with the same entries, but arranged so that the keys are in a particular order, an alist-sorter.
Develop a Scheme procedure alist-sort that takes, as its only
argument, a binary predicate may-precede? expressing an ordering
relation, and returns an alist-sorter that arranges the entries of any
given association list so that their keys are ordered by may-precede?.