8种排序算法--直接选择排序
直接选择排:这种排序思想。直接选择排序顾名思义:就是重一堆中每次取出最大数(或者最小数)依次排列:
有这么一组数:9 1 5 4 8 7 4 6 6
采用选择排序是这么的:
第1次 1 9 5 4 8 7 4 6 6 首先重开始的里面选择最小的,交换位置
第2次 1 4 5 9 8 7 4 6 6 接着又从上面黑色数字里面选最小的
第3次 1 4 4 9 8 7 5 6 6 重复
第4次 1 4 4 58 7 9 6 6
第5次 1 4 4 56 7 9 8 6
第6次 1 4 4 5 6 6 9 8 7
第7次 1 4 4 56 6 7 8 9
第8次 1 4 4 5 6 6 7 8 9
下面看看代码实现:
packagecom.fish.sort;
public class SelectSort {
public static void main(String[] args) {
// 将九个数进行排序
int[] array = { 9, 1, 5, 4, 8, 7, 4, 6, 6 };
// 排序
myResult(array);
}
public static void myResult(int[] array) {
int minIndex, swap;//用一个minindex记住最小的值的索引
for (int i = 0; i < array.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[minIndex] > array[j]) {
minIndex = j;//获取最小值索引的方法
}
}
if (i != minIndex) {//如果索引变化了说明原先不是最小值相互想换位置
swap = array[i];
array[i] = array[minIndex];
array[minIndex] = swap;
}
}
System.out.println("结果是:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
这种排序时间算法复杂度是n^2 空间复杂度为1 是不稳定的排序。