直接插入排序
-
算法思想
对于一组数据,只有一个数时,一定有序。因此只需要从第二个数开始确定它在有序序列中的位置,然后将其移到该位置
-
算法实现步骤
/**
* 直接插入排序(从小到大)
* 从第二位开始,依次向前比较,如果遇到比它大的移动位置
*/
public static void insertDirectly(int[] A) {
int[] array = A;
System.out.println("初始:");
inputArray(array);
int len = array.length;
for (int i = 1; i < len; i++) {
// 0 到 i - 1 这个序列一定是有序的,若 array[i] > array[i - 1] 此时的元素已经在它应在的位置上
// 所以只需要考虑当前元素在有序序列中的位置
for (int j = i; j > 0 && array[j] < array[j - 1]; j--) {
array[j] = array[j] ^ array[j - 1];
array[j - 1] = array[j] ^ array[j - 1];
array[j] = array[j] ^ array[j - 1];
}
}
System.out.println("直接插入排序:");
inputArray(array);
}