package test;
import java.util.Arrays;
/**
* 插入、冒泡、选择排序的温故
* @author wuling
*/
public class SortDemo {
public static void main(String[] args) {
String[] dest = {"23", "55", "63", "32", "64", "34", "88"};
String[] dest1 = dest.clone();
String[] dest2 = dest.clone();
int high = dest.length;
for (int i = 0; i < high; i++) {
// 插入排序=>思路:遍历集合,依次将前面的插入排好,最后完成
for (int j = i; j > 0 && (dest[j].compareTo(dest[j - 1])) < 0; j--) {
swap(dest, j, j - 1);
}
// 冒泡排序=>思路:遍历集合,依次将最大或者最小值移到前面,最后完成
for (int j = i + 1; j < high && dest1[i].compareTo(dest1[j]) < 0; j++) {
swap(dest, i, j);
}
// 选择排序=>思路:遍历集合,每次只将最大值移到当前位, 再整体集合非常无序的情况下,效率会较好, 每次只移动一次
int lowIndex = i;
for (int j = high - 1; j > i && dest2[j].compareTo(dest2[lowIndex]) < 0; j--) {
lowIndex = j;
}
swap(dest2, i, lowIndex);
}
System.out.println(Arrays.toString(dest));
System.out.println(Arrays.toString(dest1));
System.out.println(Arrays.toString(dest2));
}
/**
* Swaps x[a] with x[b].
*/
private static void swap(Object[] x, int a, int b) {
Object t = x[a];
x[a] = x[b];
x[b] = t;
}
}