好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

有意思的排序算法插入排序

有意思的排序算法插入排序

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

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

  于是,根据以上的算法分析,可以写出以下的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(n 2 )。

 

标签:  算法

 

 

昵称: 迷茫的孩子
园龄: 11天
粉丝: 0
关注: 1

+加关注

< 2012年4月 > 日 一 二 三 四 五 六 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5

搜索

 

 

常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 更多链接

我的标签 Java语言(2) 算法(2)

随笔档案 2012年4月 (5)

最新评论

1. Re:有意思的排序算法-插入排序 @ 机器视觉爱好者
我觉得这个跟冒泡排序是不同的吧,冒泡排序是每次都会产生一个最大值,而插入算法是将一个新来的值插入到合适的位置。 --迷茫的孩子 2. Re:有意思的排序算法-插入排序 冒泡法排序。。。。。。。。。。。。。。=_=!!!!! --机器视觉爱好者 3. Re:有意思的排序算法-插入排序 insertsort lst = helper lst [] where helper [] l = l helper (x:xs) l = helper xs (smaller ++ [x]++larger) where smaller = [a|a <- l,a<=x] larger = [b|b <- l,b>x] Haskell版的 --zhuangzhuang1988 4. Re:简化的打印语句-静态导入 @ superhzh
O(∩_∩)O哈哈~ --迷茫的孩子 5. Re:简化的打印语句-静态导入 学习了,想不到还有这样的用法 --superhzh

 

 

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于有意思的排序算法插入排序的详细内容...

  阅读:41次

上一篇: Repository

下一篇:java/C#多态漫谈