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

    一、插入排序

      描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序是稳定的排序算法。

      具体算法描述如下:

    • 从第一个元素开始,该元素可以认为已经被排序
    • 取出下一个元素,在已经排序的元素序列中从后向前扫描
    • 如果该元素(已排序)大于新元素,将该元素移到下一位置
    • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
    • 将新元素插入到该位置后
    • 重复步骤2~5

      效果图如下:

     

    二、代码

      该算法使用java代码实现,代码如下:

     1     public static void doInsertSort(int[] src)
     2     {
     3         int j, temp;
     4         for (int i = 1; i < src.length; i++)//循环数组的长度-1次 
     5         {
     6             j = i - 1;// j指向索引的前一个
     7             temp = src[i];// 把当前索引的那个数保存
     8             while (j >= 0 && src[j] > temp)// 如果索引的前一个比当前索引的那个大
     9             {
    10                 src[j + 1] = src[j];// 索引的前一个数放到当前索引的那个位置
    11                 j--;// 再寻找索引的前面的前面的数
    12             }
    13             // 此时前面的数比temp小,后面的数比temp大
    14             src[j + 1] = temp;
    15             System.out.println("第"+i +"趟结果如下:"+Arrays.toString(src));
    16         }
    17     }

      使用6 5 3 1 8 7 2 4排序每一趟结果如下:

    第1趟结果如下:[5, 6, 3, 1, 8, 7, 2, 4]
    第2趟结果如下:[3, 5, 6, 1, 8, 7, 2, 4]
    第3趟结果如下:[1, 3, 5, 6, 8, 7, 2, 4]
    第4趟结果如下:[1, 3, 5, 6, 8, 7, 2, 4]
    第5趟结果如下:[1, 3, 5, 6, 7, 8, 2, 4]
    第6趟结果如下:[1, 2, 3, 5, 6, 7, 8, 4]
    第7趟结果如下:[1, 2, 3, 4, 5, 6, 7, 8]
  • 相关阅读:
    二分搜索
    Shell 字符串处理、获取文件名和后缀名
    sqlldr使用说明
    Linux cached过高问题
    算法时间复杂度
    #if,#ifdef,#ifndef的区别
    memcpy momove strcmp源码实现
    怎么解决/bin/sh: arm-linux-gcc: not found make
    性能文章
    linux
  • 原文地址:https://www.cnblogs.com/always-online/p/3582414.html
Copyright © 2011-2022 走看看