十大排序算法-------【插入排序】详解(Java源码)

版权声明:本文为changeyd原创文章,未经changeyd允许不得转载。谢谢合作 https://blog.csdn.net/qq_40223688/article/details/88618783

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

  1. 算法描述:
    1. 一般来说插入拍摄都是采用in-place在数组上实现的。具体算法描述如下:
      1. 从第一个元素开始,该元素可以认为已经被排序;
      2. 拿到下一个元素,在已经排序的元素序列中从后向前扫描;
      3. 如果该元素(已经排序的序列元素)大于新元素,将该元素移动到下一个位置;
      4. 重复iii步骤,直到找到已排序的元素小于或者等于新元素的位置
      5. 将新元素插入到该位置之后
      6. 重复ii~v步骤
  2. https://images2017.cnblogs.com/blog/849589/201710/849589-20171015225645277-1151100000.gif
  3. 代码实现
/**

 * 插入排序

 * <p>

 * Title: charu

 * </p>

 * <p>

 * Description:

 * </p>

 *

 * @param intArray

 */

private static void charu(int[] intArray) {

        for (int i = 1; i < intArray.length; i++) {

               for (int j = i; j > 0; j--) {

                      if (intArray[j - 1] > intArray[j]) {

                             int emp = intArray[j];

                             intArray[j] = intArray[j - 1];

                             intArray[j - 1] = emp;

                      }else {

                             j = 0;

                      }

               }

        }

}
  1. 算法分析:

插入排序在实现上,通常采用的in-place排序(即只需要使用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。其本质类似交换排序(因为排序序列为数组,不是链表,需一一挪位),依次向前排序好的序列比较,只要出现比他大的元素就停止比较,

 

猜你喜欢

转载自blog.csdn.net/qq_40223688/article/details/88618783
今日推荐