排序算法-选择排序,java实现排序排序,算法图形化图解排序步骤。
排序思想
- 遍历比较,选出数组中最小的元素,放在数组的第1个位置(即与数组第1位置的元素交换位置)
- 然后在从数组第2的位置开始遍历比较,找出剩下数组中最小的元素,放在数组的第2个位置(即与数组第2位置的元素交换位置)
- 依次类推,直到将数组的所有元素排序完成
算法图形化
代码实现
排序代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
@Service("selectionSortService") public class SelectionSortServiceImpl implements ISelectionSortService {
@Override public List<SelectionSortResult> sort(Comparable[] arrays) throws Exception {
SortUtil.show(arrays); int arrayLength = arrays.length;
for(int i = 0; i < arrayLength-1; i++) { int minIndex = i;
for(int j = i + 1; j < arrayLength; j++) { if (less(arrays[j], arrays[minIndex])) { minIndex = j; } } if (i != minIndex) {
exch(arrays, i, minIndex);
SortUtil.show(arrays);
} else {
} } assert SortUtil.isSorted(arrays);
return resultList;
}
|
工具类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
public class SortUtil {
public static boolean less(Comparable var0, Comparable var1) { return var0.compareTo(var1) < 0; }
public static boolean less(Object v, Object w, Comparator comparator) { return comparator.compare(v, w) < 0; }
public static boolean less(Comparable[] var0, int var1, int var2) { return var0[var1 - 1].compareTo(var0[var2 - 1]) < 0; }
public static void exch(Object[] var0, int var1, int var2) { Object var3 = var0[var1]; var0[var1] = var0[var2]; var0[var2] = var3; }
public static boolean isSorted(Comparable[] var0) { return isSorted(var0, 0, var0.length - 1); }
public static boolean isHsorted(Comparable[] var0, int var1) { for(int var2 = var1; var2 < var0.length; ++var2) { if (less(var0[var2], var0[var2 - var1])) { return false; } }
return true; }
public static boolean isSorted(Comparable[] var0, int var1, int var2) { for(int var3 = var1 + 1; var3 <= var2; ++var3) { if (less(var0[var3], var0[var3 - 1])) { return false; } }
return true; }
public static void showLn(Comparable[] var0) { for(int var1 = 0; var1 < var0.length; ++var1) { System.out.println(var0[var1]); }
}
public static void show(Comparable[] var0) { for(int var1 = 0; var1 < var0.length; ++var1) { System.out.print(var0[var1]+" "); } System.out.println();
} }
|