This is called a diminishing increment sort
ShellSort(A, size)
- for gap<- size/2 to 1 do
- for i<- gap to size do
- tmp <- A[i]
- j <- i;
- while j ≥ gap and tmp < A[j-gap]
- A[j] <- A[j-gap]
- j <- j - gap
- A[j= <- tmp;
- i <- i + 1
- gap <- gap / 2
gap i j tmp arary
8 3 5 6 7 2 4 1
4 4 4 7 8 3 5 6 8 2 4 1
4 0 7 7 3 5 6 8 2 4 1
5 5 2 7 3 5 6 8 3 4 1
5 1 2 7 2 5 6 8 3 4 1
6 6 4 7 2 5 6 8 3 5 1
6 2 4 7 2 4 6 8 3 5 1
7 7 1 7 2 4 6 8 3 5 6
7 3 1 7 2 4 1 8 3 5 6
2 2 2 4 7 2 7 1 8 3 5 6
2 0 4 4 2 7 1 8 3 5 6
3 3 1 4 2 7 2 8 3 5 6
3 1 1 4 1 7 2 8 3 5 6
4 4 8 4 1 7 2 8 3 5 6
5 5 3 4 1 7 2 8 3 5 6
6 6 5 4 1 7 2 8 3 8 6
6 4 5 4 1 7 2 7 3 8 6
6 2 5 4 1 5 2 7 3 8 6
7 7 6 4 1 5 2 7 3 8 6
1 1 1 1 4 4 5 2 7 3 8 6
1 0 1 1 4 5 2 7 3 8 6
2 2 5 1 4 5 2 7 3 8 6
3 3 2 1 4 5 5 7 3 8 6
3 2 2 1 4 4 5 7 3 8 6
3 1 2 1 2 4 5 7 3 8 6
4 4 7 1 2 4 5 7 3 8 6
5 5 3 1 2 4 5 7 7 8 6
5 4 3 1 2 4 5 5 7 8 6
5 3 3 1 2 4 4 5 7 8 6
5 2 3 1 2 3 4 5 7 8 6
6 6 8 1 2 3 4 5 7 8 6
7 7 6 1 2 3 4 5 7 8 8
7 6 6 1 2 3 4 5 7 7 8
7 5 6 1 2 3 4 5 6 7 8