插入排序--Java版

目录:

1、介绍:

2、步骤:

3、排序效果:

4、代码展示:

5、结果展现:

———————————————————————————————————-

1、介绍:

       插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

2、步骤:

1、本次插入排序从小到大
2、角标从第二个值开始,遍历所有值
3、每次排序a[i]与前面的所有值比较
4、如果大,则前面的数据不动
5、如果小,则插入到数列中,所有数据往后移动

3、排序效果:

这里写图片描述

4、代码展示:

package com.datastructure.solr;

import java.util.Arrays;

/**
 * Created by yuhui on 2017/5/15.
 *
 * 插入排序
 *
 * 步骤:
 * 1、本次插入排序从小到大
 * 2、角标从第二个值开始,遍历所有值
 * 3、每次排序a[i]与前面的所有值比较
 * 4、如果大,则前面的数据不动
 * 5、如果小,则插入到数列中,所有数据往后移动
 */

public class A2_InserSort {

    public static void main(String ars[]){

        int[] a={53,27,36,15,69,42};
        System.out.println("初始状态: "+Arrays.toString(a));
        int[] b = InserSort(a);
        System.out.println("最终状态: "+Arrays.toString(b));
    }

    public static int[] InserSort(int[] a){
        int i,j,num=0;
        //角标从第二个值开始,遍历所有值
        for(i=1; i<a.length ; i++){
            //每次排序a[i]与前面的所有值比较
            for(j=0;j<=i;j++){
                //如果大,则前面的数据不动
                if(a[i]<a[j]){
                    //如果小,则插入到数列中,所有数据往后移动
                    int temp = a[i];
                    for(int k=i;k>j;k--){
                        a[k] = a[k-1];
                    }
                    a[j] = temp;
                }
            }
            System.out.println("第"+(++num)+"次排序: "+Arrays.toString(a));
        }   
        return a;
    }

}

5、结果展现:

初始状态: [53, 27, 36, 15, 69, 42]
第1次排序: [27, 53, 36, 15, 69, 42]
第2次排序: [27, 36, 53, 15, 69, 42]
第3次排序: [15, 27, 36, 53, 69, 42]
第4次排序: [15, 27, 36, 53, 69, 42]
第5次排序: [15, 27, 36, 42, 53, 69]
最终状态: [15, 27, 36, 42, 53, 69]

       如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京小辉

你的鼓舞将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值