# Some sorts In pseudocode, but python syntax highlighting fits decently so that's what I'm using. ## Insertion sort (for shell sort) ```py InsertionSortForShell(array, start, gap) for i = start + gap to len(array) - 1 # inclusive j = i while (j - gap >= start) and (array[j] < array[j - gap]) swap(array[j], array[j - gap]) j = j - gap ``` ## Shell sort ```py ShellSort(array, gapList) for gap in gapList for i = = 0 to gap - 1 InsertionSortForShell(array, i, gap) ``` ## Hibbard 2k - 1 where k is 1 to p where └ kp ┐ = N ## Pratt For a Z-tuples for (0, 0) -> (k, k) create all the cartesian pairs ```txt (0, 0), (0, 1), (0, 2), ..., (0, k) (1, 0), (1, 1), (1, 2), ..., (1, k) (2, 0), (2, 1), (2, 2), ..., (2, k) ... (k, 0), (k, 1), (k, 2), ..., (k, k) ``` ## Naive gap values N/2k, k = 1 to p where N/2p => 1 ```py for i, j in S value = 2i * 3j gapList.append(value) sort(gapList) gapValues[0 ... N] ```