zoukankan      html  css  js  c++  java
  • 5 Java 插入排序

     1、基本思想

    将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小则依次交换,直到出现比选择元素小的元素或者全部元素都比较过为止。

    2、算法描述

    ①. 从第一个元素开始,该元素可以认为已经被排序;

    ②. 取出下一个元素,在已经排序的元素序列中从后向前扫描;

    ③. 如果该元素(已排序)大于新元素,将该元素移到下一位置;

    ④. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

    ⑤. 将新元素插入到该位置后

    ⑥. 重复步骤②~⑤

     

    3、代码实现

    原数组:10, 1, 9, 2, 8, 3, 7, 4, 6, 5

    第一次排序:1, 10, 9, 2, 8, 3, 7, 4, 6, 5

    第二次排序:1, 9, 10, 2, 8, 3, 7, 4, 6, 5

    第三次排序:1, 2, 9, 10, 8, 3, 7, 4, 6, 5

     

    public class InsertSort {
    
        public static void main(String[] args) {
            int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
            insertSort(array);
        }
    
        /**
         * @param array
         */
        public static void insertSort(int[] array) {
            int len = array.length;
            for (int i=1; i<len; i++) {
                // 临时变量存储选择元素
                int temp = array[i];
                int j = i -1;
                while(j>=0 && temp < array[j]) {
                    array[j+1] = array[j];
                    j--;
                }
                j++;
                // 选择的元素放到该位置
                if (j != i) {
                    array[j] = temp;
                }
                System.out.println(Arrays.toString(array));
            }
        }
    }
    View Code
  • 相关阅读:
    五、excel末尾补0和开头补0
    MYSQL查询前30条数据
    MYSQL数据库从A表把数据插入B表
    测试用例大全
    EXTJS 5.0 资料
    fs event_socket
    centos 编译swoole
    Valgrind简单用法
    linux 大并发下 内核优化
    FS拓展设置
  • 原文地址:https://www.cnblogs.com/Latiny/p/10522229.html
Copyright © 2011-2022 走看看