package top.simba1949;
/**
* 插入排序算法——直接插入排序
*
* 直接插入排序算法原理:
* 1. 从第一个元素开始,该元素可以认为已经被排序
* 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
* 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
* 4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
* 5. 将新元素插入到该位置后
* 6. 重复步骤 2~5
*
* @author SIMBA1949
* @date 2019/6/29 20:52
*/
public class DirectInsertSort {
public static void main(String[] args) {
int[] intArr = {1, 9, 90, 20, 30, 66, 34, 55, 54, 44, 66};
directInsertSortImpl(intArr);
for (int i : intArr) {
System.out.print(i + "\t");
}
}
public static void directInsertSortImpl(int[] original){
if (null == original || original.length < 2){
return;
}
for (int i = 1; i < original.length; i++) {
// original[j] < original[j - 1] 从小到大排序
// original[j] > original[j - 1] 从大到小排序
for (int j = i; j > 0 && original[j] < original[j - 1]; j--){
int temp = original[j];
original[j] = original[j - 1];
original[j - 1] = temp;
}
}
}
}