package com.insert;

import java.util.Arrays;

/**
 * 直接插入排序
 * @author wanjn
 *
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] a = {50,3,6,1,7,9,6};
        System.out.println(Arrays.toString( insertSort(a)));;
    }
    private  static int[] insertSort(int[] a){
        int temp;
        int j ;
        //a[0] 本身就是有序的,所以从1到n-1插入数据
        for (int i = 1; i < a.length; i++) {
            //将 待插入数据 保存下来,方便比较以及 有序段数据的移动
            temp = a[i];
            //然后依次往有序段前面查找 即从i-1到0之间的有序段中查找到待插入数据中数据的插入位置
            //假如是从小到大,只有当待插入数据 temp < a[j] 的时候才需要将a[j]的数据往后移动,否则就找到了插入位置,直接插入即可
            for ( j = i-1;j>=0&& temp <a[j]; j--) {
                //将大的往后挪
                 a[j+1] =  a[j]; 
            }
            //当temp >=a[j]时,则插入
            //不满足条件时,j已经--了,需要加1加回来
            a[j+1]=temp;
        }
        return a;
    }
}

 

 posted on 2018-03-12 21:02  改变一下  阅读(86)  评论(0编辑  收藏  举报