插入排序 Insertion sort

原创 2013年12月04日 22:14:59
是一种简单的排序方法。时间复杂度为 O(n^2),即N的平方。在数据量较小的情况下,是比较有效的排序方式。

输入:N个数 < a1,a2,a3.....an >
输出:输入序列的一个排序 <a'1,a'2,a'3.....a'n> 要求 a'1<=a'2<=.....a'n

思想:把序列分为2部分:已排序,未排序。 每次从未排序中取一个数,与已排序中的值比较,插入到合适的位置。

public class InsertSort {
      public static void main(String[] args) {
             // TODO Auto-generated method stub
             int[] a;
            a = new int[30];
            Random rand = new Random();
             for( int i=0;i<a. length;i++){
                  a[i] = rand.nextInt(100);
            }
             println(a);
             long s = System. nanoTime();
             int[] b= sort(a);
             long dur = System. nanoTime() - s;         
             println(b);
            System. out.println(dur);            
      }
      
      public static int[] sort(int[] a){
             for( int i=1;i<a. length;i++){
                   int key = a[i];
                   int j=i-1;
                   while (j>=0 && a[j]>key){
                        a[j+1] = a[j];
                        j=j-1;
                  }
                  a[j+1] = key;
            }
             return a;         
      }

      public static void println(int[] a){
            System. out.print( "[");
             for ( int i = 0; i < a. length; i++) {
                  System. out.print(a[i]);
                   if(i != a. length-1)
                        System. out.print( ",");
            }
            System. out.println( "]");
      }
}


Python 数据结构与算法——插入排序(insertion sort)

我们先归纳性地假设前 n−1n-1 个元素已经完成排序,现在要将第 nn 个元素插入到正确位置。如下为递归版的插入排序的代码清单:# n == len(seq)-1, seq[n] 表示序列的最后一个...
  • lanchunhui
  • lanchunhui
  • 2016-03-21 15:02:47
  • 963

C++插入排序法(Insertion Sort)

// implementation of Insertion Sort (C++) #include using namespace std; void SwapTwo(int &a, int...
  • lijialinapple
  • lijialinapple
  • 2014-04-03 23:38:52
  • 1775

插入排序Sort a linked list using insertion sort in Java

Sort a linked list using insertion sort in Java package algorithm.sort; class ListNode { int ...
  • u013063153
  • u013063153
  • 2015-08-25 10:41:15
  • 736

Java 插入排序(Insertion Sort)

插入排序 代码插入排序插入排序(Insertion Sort)的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^...
  • fangyaoyu
  • fangyaoyu
  • 2015-12-03 09:39:45
  • 576

insert sort algorithm 插入排序算法 java实现

insert-sort-insert sort algorithm 插入排序算法插入排序就是将数组后面的数据和数组前面的数据进行比较,如果符合条件,就插入到那个位置java代码实现,如下:for (i...
  • liqingsanjin
  • liqingsanjin
  • 2017-02-16 16:03:12
  • 514

插入排序(INSERTION-SORT) PYTHON实现

给定一个序列(如数组),使用插入排序。插入排序用生活中的例子,比如,向小学里面学生按身高排座位。学生无序排成一列,老师进行身高从低到高的排序。老师从第二个学生开始,空出第二个物理位置,开始与第一个学生...
  • rifengxxc
  • rifengxxc
  • 2017-05-24 13:28:30
  • 818

静态链表插入排序(List Insertion Sort)算法

静态链表插入排序(List Insertion Sort)算法是直接插入排序的一个变种。它的改进目的是减少在直接插入排序中的移动次数,因此在原输入数据的基础上附加一个静态链表(为了减少空间的消耗,静态...
  • ljsspace
  • ljsspace
  • 2011-07-20 14:22:55
  • 3815

经典算法(8)- 插入排序(Insertion Sort) 及三个基本排序算法的比较

 插入排序的基本思想是每次取右边的第一个元素,将它与左边已经排好序的元素一一比较,如果该元素比第j个元素大,就将该元素插入到第j和第j+1个元素之间。 最坏的情况下(比如输入序列是个逆序),每个元素...
  • ljsspace
  • ljsspace
  • 2011-05-31 17:20:00
  • 1178

插入排序算法(Insertion Sort)的两种实现

插入排序算法的两种实现。
  • beiyeqingteng
  • beiyeqingteng
  • 2010-07-15 04:21:00
  • 3536
收藏助手
不良信息举报
您举报文章:插入排序 Insertion sort
举报原因:
原因补充:

(最多只允许输入30个字)