Overview
Property | Value |
---|---|
Best Case | |
Worst Case | |
Avg. Case | |
Aux. Memory | |
Stable | Yes |
Adaptive | Yes |
Loop Invariant
Consider loop invariant given by
A[0:i-1]
is a sorted array of thei
least elements ofA
.
We prove maintains the requisite properties:
- Initialization
- When
i = 0
,A[0:-1]
is an empty array. This trivially satisfies .
- When
- Maintenance
- Suppose holds for some
0 ≤ i < n - 1
. ThenA[0:i-1]
is a sorted array of thei
least elements ofA
. Our inner loop now starts at the end of the array and swaps each adjacent pair, putting the smaller of the two closer to positioni
. Repeating this process across all pairs fromn - 1
toi + 1
ensuresA[i]
is the smallest element ofA[i:n-1]
. ThereforeA[0:i]
is a sorted array of thei + 1
least elements ofA
. At the end of the iteration,i
is incremented meaningA[0:i-1]
still satisfies .
- Suppose holds for some
- Termination
- Termination happens when
i = n - 1
. Then impliesA[0:n-2]
is a sorted array of then - 1
least elements ofA
. But thenA[n-1]
must be the greatest element ofA
meaningA[0:n-1]
, the entire array, is in sorted order.
- Termination happens when
Bibliography
- Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022).