Basic method specifications: ---------------------------------------- All sorts will have at least 3 optional boolean parameters available - time, verbose, and visual. These will always be the first three parameters, and will always perform similar functions. They are all given default values of false. time - gives the total time needed to complete the sort. verbose - gives the # of compares and # of swaps needed to complete the sort visual - shows a rudimentary visualisation of the progress of the sort. Usually shows the full list before each swap. Not recommended for lists longer than ~25 items. In addition, some sorts will have other optional parameters available. For example, comb sort can be passed a shrink parameter to determine how quickly the gap between compared elements shrinks. All optional parameters are given default values, which will be listed in the method documentation. Every sort will have two forms available, destructive and non-destructive. Destructive form is always signified by an exclamation point (!) appended to the sort name (bubbleSort! is destructive, bubbleSort is not). These are implemented using one method for the actual sort logic, and two for the destructive and non-destructive interfaces to the sort method. Documentation: each sort will have a documentation block before its method code begins containing a brief description of the algorithm used and any optional parameters besides the standard three that the sort supports.