java方式实现插入排序

一、基本思想

  通过构建有序序列,从前往后扫描未排序序列,依此取出未排序序列元素,然后从后往前扫描有序序列,找到相应位置并插入。该算法一个进行n-1趟插入,每一趟插入要进行n-k(k为第k趟插入)次比较,所有插入排序的时间复杂度为O(n2),空间复杂度为O(1).

      

二、实现步骤

  1. 首先将待排序序列的第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  2. 从头到尾依次扫描未排序序列,将扫描到的每一个元素插入到有序序列相应的位置。

三、图解

四、代码实现

public class JavaSort {
	public static void main(String[] args) {
		int a [] =new int []{1,5,4,10,6,29,5,20};
		System.out.println("排序前的数组:"+Arrays.toString(a));
		insertSort(a);
		System.out.println("排序后的数组:"+Arrays.toString(a));
	}
	


	/**
	 * 
	 * @param ary 要排序数组
	 * @return  已排序的数组
	 */
	
	public static int [] insertSort(int [] ary) {
		for (int i = 1; i < ary.length; i++) {
			int j=i;//j为要插入元素下标
			int temp=ary[i];//暂存要插入的元素
			while(j>0&&ary[j-1]>temp) {//将要插入元素与已排序的数组元素进行比较,找到要插入的位置
				ary[j]=ary[j-1];
				j--;
			}
			ary[j]=temp;//插入要插入的元素
	
			
		}
		return ary;
	}
}

运行结果:

猜你喜欢

转载自www.cnblogs.com/shareAndStudy/p/12452508.html