极客时间-排序-插入排序

package data.sort;

public class InsertSort {

    public static void sort(Integer[] a)
    {
        //将a[]按升序排列
        int N=a.length;
        for (int i=1;i<N;i++)
        {
            int value=a[i];
            int j=i-1;
            for(;j>=0;j--) {
                if(a[j]>value) {
                 a[j+1]=a[j];
                }else{
                    break;
                }
            }
            a[j+1]=value;
        }
    }




    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //插入排序:1)一个元素的集合是有序的,新插入元素时,从有序集合的最大值开始比较
             2)如果插入值小于有序集合中当前的比较值,那就把当前集合中的当前比较值后移一位
        //继续向后比较其余元素和插入元素的大小,重复2的操作,保证插入新元素后的集合仍然有序
        //插入排序之所以比冒泡排序受欢迎是因为其效率比冒泡会高一点,插入排序判断条件成立后只做一个移动操作,然而冒泡交换两个元素的位置,需要做三步,如果逆序度为k的数组
        //那么插入这里执行k次移动,而冒泡进行3k次交换的操作
        Integer a[]={0,3,1,12,34,2,6,21,78,9,65};
        //下标从1开始
        //{0}
        //{0,3}
        //{0,1,3}  开始把3和插入值1比较,3>1 ,把当前插入值1临时保存到value,3后移到1的位置,插入值1大于0,终止比较
        //{0,1,3,12,34} 开始把34和插入值2比较,34>2 ,把当前插入值2临时保存到value,34后移到2的位置,继续重复比较,到插入值2和1比较,不再小于比较值时终止

        InsertSort.sort(a);
        for (int i=0;i<a.length;i++)
        {
            System.out.println(a[i]);
        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值