算法 排序算法之插入排序

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;
			}
		}
	}
}

点赞