Functional Problem Solving (CSC 151 2014S) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Overview
Strategy one:[Quicksort]
Strategy two: [Selection sort]
Strategy three: [Bubble sort]
Strategy four: [Insertion sort]
All are correct.
Quicksort is much faster than the other three. Quicksort is also really easy to get wrong.
Suppose we had to write the documentation for a sorting procedure for lists
;;; Procedure: ;;; sorter ;;; Parameters: ;;; ah, a potentially empty list ;;; get-key, a unary procedure which extracts the key used for sorting ;;; may-precede?, a predicate which determines whether one key ;;; should come before another ;;; Purpose: ;;; Rearrange the elements of the list in a particular order ;;; Produces: ;;; sortah, a list ;;; Preconditions: ;;; may-precede? must be applicable to any two keys ;;; may-precede? is a complete order - transitive ;;; all the elements of ah should be the same type ;;; get-key must be applicable to all elements of ah ;;; Postconditions: ;;; sortah is ordered by get-key/may-precede ;;; For all reasonable i, ;;; (may-precede? (get-key (list-ref sortah i)) ;;; (get-key (list-ref sortah (+ i 1))) ;;; sortah is a permutation of ah
;;; Procedure: ;;; vector-sorter ;;; Parameters: ;;; um, a vector ;;; Purpose: ;;; Produces: ;;; Preconditions: ;;; Postconditions:
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Samuel A. Rebelsky, rebelsky@grinnell.edu
Copyright (c) 2007-2014 Janet Davis, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials are copyright by John David Stone or Henry Walker and are used with permission.)

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-nc/3.0/
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.