简单选择排序算法
简单选择排序是一种简单直观的排序算法。每一趟从待排序的记录中选出最小的元素,放入已排好序的序列后,直到全部记录排序完毕。
Java实现
public static void selectionSort(int[] array){
for (int i = 0; i < array.length - 1; i++) {
for (int j = i; j < array.length; j++) {
if( array[j] < array[i] ){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
//输出每一趟的结果
System.out.print("第" + (i+1)+ "趟:");
display(array);
}
}
public static void main(String[] args) {
int[] a = new int[]{5, 7, 9, 8, 6, 3, 4, 2, 1};
selectionSort(a);
System.out.print("排序后:");
display(a);
}
运行结果
第1趟:1 9 8 7 6 5 4 3 2
第2趟:1 2 9 8 7 6 5 4 3
第3趟:1 2 3 9 8 7 6 5 4
第4趟:1 2 3 4 9 8 7 6 5
第5趟:1 2 3 4 5 9 8 7 6
第6趟:1 2 3 4 5 6 9 8 7
第7趟:1 2 3 4 5 6 7 9 8
第8趟:1 2 3 4 5 6 7 8 9
排序后:1 2 3 4 5 6 7 8 9
算法特点
- 简单选择排序算法是不稳定的,如一个序列为(2,2,1),第一次选择会对换第一个2和1的位置,导致第一个2排在了第二个2的后面。
- 时间复杂度为O(n2)
- 空间复杂度为O(1)