package SortArith;
/**
* 插入排序
* @author lwk
* 时间复杂度O(2)
* 稳定排序
*/
public class InsertSort {
public static void main(String[] args) {
int[] array={9,7,8,6,5,4,3,2,1};
insertSort(array);
for(int i=0;i<array.length;i++){
System.out.print(array[i]);
}
}
public static void insertSort(int[] array){
if(array == null || array.length == 0){
return;
}
//每个元素要插入时与其相邻左边元素进行比较,如果比左边元素小,则进行插入操作,插入左边
//i=0元素为起始元素,已经放好位置,从i=1元素开始插入
for (int i = 1; i < array.length; i++) {
if(array[i] < array[i-1]){
//寻找array[i]插入位置,将大于array[i]的元素分别右移一位
int temp = array[i];//保存array[i]的值,因为在元素右移后,该值会覆蓋(变化)
int j;//声明j,下面有用
for(j = i-1;j >= 0 && array[j] > temp;j--){
//大于array[i]的元素元素右移
array[j+1] = array[j];
}
//此时j为刚好小于array[i]的元素位置,j+1 为空出来待插入的位置
//将待插入元素array[i]插入j+1位置
array[j+1] = temp;
}
}
}
}