zoukankan      html  css  js  c++  java
  • 有意思的排序算法插入排序

          所谓排序,无非就是把一个无序的序列排成一个有序的序列,从本文开始,将着重介绍经典的一些排序算法。

          插入排序,是指将待排序列中的数,一个一个插入到适当位置的过程。说起算法的概念来,总是让人摸不着头脑,还是从生活中的例子来理解吧。相信每个人都玩过牌,我们在开始摸牌的时候,左手是空的,牌面朝下放到桌子上,接着,一次从桌子上摸起一张牌,并将它插入到左手一把牌中的正确位置上,为了找到这张牌的正确位置,要将它与手中已有的每一张牌从右到左地进行比较,无论什么时候,左手中的牌都是排好序的,而这些牌原先都是桌子上那副牌里最顶上的一些牌。

      于是,根据以上的算法分析,可以写出以下的Java代码。

     1 /**
     2      * 插入排序算法
     3      * 
     4      * @param A
     5      *            int数组
     6      * @param isInc
     7      *            是否升序,true为升序,false为降序
     8      */
     9     private void InsertSort(int[] A, boolean isInc) {
    10         int len = A.length;
    11         int key = 0;
    12         int i = 0;
    13         for (int j = 1; j < len; j++) {
    14             key = A[j];
    15             i = j - 1;
    16             while (i >= 0 && (isInc ? A[i] > key : A[i] < key)) {
    17                 A[i + 1] = A[i];
    18                 i = i - 1;
    19             }
    20             A[i + 1] = key;
    21         }
    22     }

      从算法的机理可以看出,该算法是原地排序的,而且其算法复杂度为O(n2)。

  • 相关阅读:
    Linux删除文件相关命令
    Bing语句
    VS2013配置Winpcap
    node10-mongoose
    node09-cookie
    node08-express
    node07-http
    node06-path
    node05-fs
    node04-buffer
  • 原文地址:https://www.cnblogs.com/unpolishedgem/p/2475729.html
Copyright © 2011-2022 走看看