compsci-notes-spring-2024/notes/fund-prog-3/some-sorts-2024-01-31.md
2024-01-31 20:20:15 -06:00

1 KiB

Some sorts

In pseudocode, but python syntax highlighting fits decently so that's what I'm using.

Insertion sort (for shell sort)

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

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

(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

for i, j in S
    value = 2<sup>i</sup> * 3<sup>j</sup>
    gapList.append(value)
    sort(gapList)
    gapValues[0 ... N]