插入排序

java插入排序

1、算法思路:每趟将一个待排序的元素作为关键字,按照其关键字值得大小插入到已经排好的部分的适当位置上,知道插入完成。

2、算法过程

举个栗子(第一趟的排序过程)

原始序列:49、38、65、97、76、13、27、49

1)开始以第一个元素49为关键字,看成一个序列,其余数看成另一个序列,此时一个关键字数49序列是有序的。

结果:{49} {38、65、97、76、13、27、49}

2)插入38。38<49,所以49向后移动一个位置,38插入到原49位置

结果:{38、49} {65、97、76、13、27、49}

3)插入65。65>49,所以不需要移动,65插入49之后

结果:{38、49、65} {97、76、13、27、49}

4)插入97。97>65,所以不需要移动,97插入65之后

结果:{38、49、65、97} {、13、27、49}

5)插入76。76<97,所以97向后移动一个位置,继续比较,76>65,65不需要移动,76插入到65之后,97之前的位置

结果:{38、49、65、76、97} {、13、27、49}

6)插入13。13<97,所以97向后移动一个位置,继续比较,13>76,所以76向后移动一个位置不需要移动,继续比较,13>65,逐次比较,发现13应插入最前位置

结果:{13、38、49、65、76、97} {、27、49}

7)插入27。27<97,所以97向后移动一个位置,继续比较,27>76,所以76向后移动一个位置不需要移动,继续比较,27>65,逐次比较,发现27应插入13之后,38之前

结果:{13、27、38、49、65、76、97} {、49}

8)最后插入剩余元素49。同理逐次比较,发现49=49<65,应插入49之后,65之前位置

结果:{13、27、38、49、49、65、76、97}

排序结束,得到一个有效序列

 public static void insert(int[] insert){
        for (int i = 1; i < insert.length ; i++){
            int num = insert[i];
            int j = i;
           for (j = i; j > 0 && insert[j-1]>num; j-- ){
               int middle = insert[j];
               insert[j] = insert[j-1];
           }
           insert[j] = num;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值