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

    基本思想

      插入排序的基本思想是:将n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

    插入排序思路图

     代码实现

    package sort;
    
    import java.util.Arrays;
    
    public class InsertSort {
        public static void main(String[] args) {
            int[]arr={17,3,25,14,20,9};
            insertSort(arr);
        }
        //插入排序
        public static void insertSort(int[]arr){
            int insertVal=0;
            int insertIndex=0;
            for(int i=1;i<arr.length;i++){
                //定义待插入的数
                insertVal=arr[i];
                insertIndex=i-1;
                /*
                * 给insertVal找到插入的位置
                * insertIndex>=0,保证给insertVal找到的位置不越界
                * insertVal<arr[insertIndex]说明还没有找到插入位置(从小到大排序)
                * 就需要将arr[insertIndex]后移
                * */
                while (insertIndex>=0&&insertVal<arr[insertIndex]){
                    arr[insertIndex+1]=arr[insertIndex];
                    insertIndex--;
                }
                //当退出while循环时,说明插入的位置找到
                //这里判断是否需要赋值
                if(insertIndex+1!=i){
                    arr[insertIndex+1]=insertVal;
                }
                System.out.println("第"+i+"轮插入");
                System.out.println(Arrays.toString(arr));
            }
        }
    }

    运行结果

  • 相关阅读:
    php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解
    DataSet 的详细用法(转)
    DataSet 的用法(转)
    大神的博客地址
    c#报表 柱,饼状图
    WebApi 增删改查(2)
    Linq to SQL 的左连,右连,内连(转)
    WebApi 增删改查
    Linq to SQL 的连表查询(转)
    LINQ
  • 原文地址:https://www.cnblogs.com/ftx3q/p/15745443.html
Copyright © 2011-2022 走看看