Find smallest element, swap it with element at location 0;
Find next smallest element, swap it with element at location 1;
etc.
public static void selectionSort( int[] vals ) { int indexmin; for (int i = 0; i < vals.length-1; i++) { indexmin = i; for (int j = i+1; j < vals.length-2; j++) { if (vals[j] < vals[indexmin]) { indexmin = j; } } swap( vals, indexmin, j ); } }
Correctness:
Left array is always sorted.
Performance:
Time: O(n^2)
Space: O(1)
Note:
Not sensitive to already almost sorted array (takes same amount of time)
So Best = Worst = O(n^2)
No comments:
Post a Comment