* 直接插入排序:在排序过程中,向有序子表逐个的插入元素操作进行了n-1趟,每趟操作都分为比较关键字和移动元素,而比较次数和移动次数取决于带排序表的初始状态。在最好情况下,时间复杂度O(n),最坏情况下O(n*n)
* 稳定性:每次插入元素都是从后向前先比较在移动,稳定算法
* 适用性:直接插入排序算法适用于顺序存储和链式存储的线性表,当为链式存储时,可以从后往前查找指定元素的位置;(大部分排序算法都仅适用于顺序存储的线性表)
public class SimpleInsertSort {
public static void simpleInsert(int[] arr){
if(arr==null||arr.length<2){
return;
}
for(int i=1;i<arr.length-1;i++){
for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){
SimpleSorting.swap(arr, j+1, j);
}
}
for (int i : arr) {
System.out.println(i);
}
}
public static void swap(int[] arr,int i,int minValue){
int temp =arr[i];
arr[i] =arr[minValue];
arr[minValue]=temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,3,5,7,9,2,4,6,8};
simpleInsert(arr);
}
}