基础类:
提供辅助方法和待排序的数组
package org.yyf.algorithm.sort;
import java.util.Arrays;
public class Base {
//带排序的数组
protected static final int[] DISORDER_ARRAY = new int[]{3, 4, 5, 1, 2, 4, 4, 2, 6, 9, 0, 8, 7};
//数组的长度
protected static final int ARR_LEN = DISORDER_ARRAY.length;
//交换相应2个位置的数
public static void exchange(int[] srcArr, int indexI, int indexJ) {
int temp = srcArr[indexI];
srcArr[indexI] = srcArr[indexJ];
srcArr[indexJ] = temp;
}
//打印数组
public static void show() {
System.out.println(Arrays.toString(DISORDER_ARRAY));
}
}
选择排序
package org.yyf.algorithm.sort;
import java.util.Arrays;
/**
* Created by tobi on 16-10-21.
* 选择排序的实质就是每轮选出最小的那个数,依次放到数组的前面去,感觉是最好理解的一种
* <p>
* 简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数总是N (N - 1) / 2。
* 而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0.
* 当序列反序时,移动次数最多,为3N (N - 1) / 2。
*/
public class SelectSort extends Base {
public static void main(String[] args) {
for (int i = 0; i < ARR_LEN; i++) {
for (int j = i; j < ARR_LEN; j++) {
if (DISORDER_ARRAY[j] < DISORDER_ARRAY[i]){
exchange(DISORDER_ARRAY, i, j);
}
}
}
System.out.println(Arrays.toString(DISORDER_ARRAY));
}
}
网友评论