SelectionSort(A)
// GOAL: place the elements of A in ascending order
1 n := length[A]
2 for i := 1 to n
3 // GOAL: place the correct number in A[i]
4 j := FindIndexOfSmallest( A, i, n )
5 swap A[i] with A[j]
// L.I. A[1..i] the i smallest numbers sorted
6 end-for
7 end-procedure
FindIndexOfSmallest( A, i, n )
// GOAL: return j in the range [i,n] such
// that A[j]<=A[k] for all k in range [i,n]
1 smallestAt := i ;
2 for j := (i+1) to n
3 if ( A[j] < A[smallestAt] ) smallestAt := j
// L.I. A[smallestAt] smallest among A[i..j]
4 end-for
5 return smallestAt
6 end-procedure
Counting code
In FindIndexOfSmallest, dominated by line 3, run
n-i times.
In SelectionSort, dominated by line 4, run
n times, the i-th call
to FindIndexOfSmallest taking time
n-i, i=1, ..., n.
Burton Rosenberg
Creation Date: Wed Aug 25 14:48:27 EDT 2004