zoukankan      html  css  js  c++  java
  • 三、插入排序

    插入排序、和打扑克牌,抓牌的过程是一样的。

     大致就是这么个意思,图画的不好,请担待。图上描述的是插入的过程,那么他怎么知道,一个一个的和前面的作比较,比前边的数字小就交换,一直交换到正确的位置。

    package bubbling;
    
    /**
     * <p>插入排序</p>
     *
     * @author zy 刘会发
     * @version 1.0
     * @since 2020/4/9
     */
    public class Insert {
    
        static void ari() {
            int a[] = new int[]{9, 3, 5, 7, 6, 2, 1, 4, 8};
            for (int i = 1; i < a.length; i++) {
                for (int j = i; j > 0; j--) {
                    if (a[j] < a[j - 1]) {//和前一个比较
                        exchange(a, j - 1, j);
                    }
                }
            }
            print(a);
        }
    
        /**
         * 交换
         *
         * @param a 要交换位置的数组
         * @param i 要交换的位置(正确的位置)
         * @param j 最小值所在的位置
         */
        static void exchange(int[] a, int i, int j) {
            int temp = a[i];//用temp 最为第三方变量存储正确位置的值
            a[i] = a[j];//将正确的值放到正确的位置
            a[j] = temp;
        }
    
        static void print(int a[]) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + ",");
            }
        }
    
        public static void main(String[] args) {
            ari();
        }
    }

    从上诉代码看出,他和冒泡很像,冒泡是从前往后比较交换,他好像是反过来的样子,确实是这样的,但是插入排序却比冒泡效率要高的很多。你细品,再品。冒泡每一个都要作比较而插入排序好像不是呦。插入排序只要找到位置了,那就一定是正确的,但是冒泡只有在完成所有循环之后才会是正确的位置!

  • 相关阅读:
    PasswordHasher 算法
    Java的环境变量配置
    CSS2+DIV的学习心得
    struts2利用token机制拦截用户重复提交
    电脑开机出现 error: no such partition grub rescue
    MySQL limit实际用法的详细解析
    win7将硬盘由ATA修改为AHCI的方法
    与SVN相关的程序的调试问题【转】
    【转】JSP提交表单
    LigerUI 快速开发UI框架 链接
  • 原文地址:https://www.cnblogs.com/Tiandaochouqin1/p/12679573.html
Copyright © 2011-2022 走看看