选择性排序是基于“选择”的,简单选择排序是每一次为一个数选择出一个合适的位置放进去。Java代码如下:
升序排序:
/** * 简单选择排序 * 升序排序 */ @Override public <T extends Comparable<? super T>> void sortByAsc(T[] data) { if(data == null || data.length <= 1){ return; } /**遍历数组,为每一个数选择适合他的位置*/ for(int i = 0; i < data.length; i++){ int index = i; /**遍历i之后的数组,找到合适的值*/ for(int j = i + 1; j < data.length; j++){ if(data[index].compareTo(data[j]) > 0){ index = j; } } /**交换值*/ T temp = data[index]; data[index] = data[i]; data[i] = temp; } }
升序排序:
/** * 简单选择排序 * 降序排序 */ @Override public <T extends Comparable<? super T>> void sortByDesc(T[] data) { if(data == null || data.length <= 1){ return; } /**遍历数组,为每一个数选择适合他的位置*/ for(int i = 0; i < data.length; i++){ int index = i; /**遍历i之后的数组,找到合适的值*/ for(int j = i + 1; j < data.length; j++){ if(data[index].compareTo(data[j]) < 0){ index = j; } } /**交换值*/ T temp = data[index]; data[index] = data[i]; data[i] = temp; } }