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
  • 相关阅读:
    Linux基础命令题(ps/ls + grep)
    Operator Overloading in C++
    C++中class和struct的区别
    poj1110double vision搜索
    poj1321棋盘递归搜索
    vim窗口分割/切换
    xclipmore about copy&paste命令行粘贴
    [转载]怎样花两年时间去面试一个人
    最优二叉查找树optimalBSTC++实现
    vim复制粘贴——系统剪贴板
  • 原文地址:https://www.cnblogs.com/Latiny/p/10522229.html
Copyright © 2011-2022 走看看