"插入排序"算法-之通俗易通图文+代码详解

1.特点介绍

    下面给大家讲解一下经典排序算法之-插入排序算法,何为插入排序算法,其实其特点就是如下所讲:
    对于一组数组:
    1.先让1角标对比0角标值,小的放0大的放1
    2.再让2角标对比1角标值,小的放1大的放2,1再比0,小前大后
    3.再到3比2,小前大后,2比1,小前大后,以此类推

2.图解原理

这里写图片描述


3.代码详情

/**
 * 插入排序
 * 
 * 思路:第二个和第一个比;
 *  1.开始1角标值和0角标值比
 *      1.如果1位小于0位,互换,小的放前面;
 *      2.再看2位如果小于1位,互换,如果再小于0位,也换;
 *      3.再看3位如果小于2位,互换,如果再小于1位,也换,再小于0位,也换
 */

public class Demo05 {
    public static void main(String[] args) {
        int[] arr = {4, 2, -6, 9, 1};// 角标0-4,length=5;
        printArray(arr, "初始");
        insertSort(arr);
        printArray(arr, "结果");

    }
    private static void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {  //外层第二个开始
            for (int j = i; j >0 ; j--) {     //每次和前面的比,且后往前
                if (arr[j] < arr[j-1]) {        //逐个两个连续的比就是j和j-1;
                    int tem = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = tem;
                }
            }
        }
    }

    private static void printArray(int[] arr, String str) {
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                if (i == 0) {
                    System.out.print("[" + arr[i] + ",");
                } else {
                    System.out.print(arr[i] + ",");
                }
            } else {
                System.out.println(arr[i] + "]" + "----" + str);
            }
        }
    }
}

打印结果

[4,2,-6,9,1]----初始

[2,4,-6,9,1]--------第1轮
[-6,2,4,9,1]--------第2轮
[-6,2,4,9,1]--------第3轮
[-6,1,2,4,9]--------第4轮

[-6,1,2,4,9]----结果

4.总结

    快速排序,记住的还是双重for循环.
    1.外层控制从1角标开始.
    2.内层是=外层,并逐个连续往前对比j=i,并且j--
    3.这样就完全符合了插入排序的特点了

以上就是插入排序的详细过程,希望能帮组大家.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值