Java工程师的第四天_插入排序(1)

插入排序的理解:

给定一个数组 a[5] = {3,1,2,4,5}

第一步:

初始情况是,a[0]作为已排序组,其它元素作为未排序组;

选择a[1]和a[0]比较,a[1] < a[0],故a[1]排在a[0]的左边;

用临时变量temp = a[1],再将a[0]移到a[1]的位置上,a[1] = a[0];

第二步:

此时1,3是已排序组,2,4,5是未排序组;

选择a[2]和已排序组中的a[1]比较,a[2] < a[1],故a[2]要排在a[1]的左边;

但是并不清楚,a[2]和a[0]的大小,所以仍需比较a[2]和a[0],a[2] > a[0],故a[2]排再a[0]的右边;

第三步:

此时1,2,3是已排序组,4,5是未排序组

选择a[3]和a[2]比较,a[3] > a[2],故a[3]排在a[2]的右边;

再选择a[4]和a[3]比较,同样在右边

最后结果1,2,3,4,5

实现代码如下:

public class Insert{

    public static void main(String[ ] args){

        int[ ] a = {3,1,2,4,5};

        for(int i = 1;i<5;i++){    //i是未排序组的第一个元素下标

            int j = i-1;    //j是已排序组的最后一个元素下标

            temp = a[i];    //用临时变量temp保存待插入的数

            while(j>=0 && a[j]>temp){     //因为要和所有的已排序好的元素比较,所以要有循环,直到j为0

                    a[j+1] = a[j];    //待插入的数较小,则先把大的数向后移动一个,

                                           //直到temp大于已排序好的数中的某一个,

                                           //若a[j]<temp,则把temp插在a[j+1]的位置上

                     j--;

            }

            a[j+1] = temp;     //若a[j]<temp,则把temp插在a[j+1]的位置上

        }

    }

}

转载于:https://my.oschina.net/u/3843264/blog/1801730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值