1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public static void sort( int [] array) { int minIndex; for ( int i = 0 ; i < array.length; i++) { minIndex = i; for ( int j = i + 1 ; j < array.length; j++) { if (array[minIndex] > array[j]) { minIndex = j; } } swap(array, i, minIndex); } } public static void swap( int [] array, int a, int b) { int temp = array[a]; array[a] = array[b]; array[b] = temp; } |
选择排序和冒泡排序的思路大致是一样的,只不过每次在外层扫描后都找到最小的值,然后进行交换而已。相对于冒泡排序来讲的话只是减少了交换的次数。
最优时间复杂度:O(n^2)
平均时间复杂度:O(n^2)
最坏时间复杂度:O(n^2)
平均空间复杂度:O(1)
选择排序是不稳定的,因为在选择过程中会涉及到前后交换的动作,所以选择排序是不稳定的。