插入排序 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( "]");
      }
}


版权声明:

相关文章推荐

数据结构 - 直接插入排序(Straight Insertion Sort) 详解 及 代码(C++)

直接插入排序(Straight Insertion Sort) 详解 本文地址: http://blog.csdn.net/caroline_wendy 具体参见: TAOCP, 第三卷(排序...

Insertion Sort(插入排序)

基本思路: 当前索引左边的所有元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。即逐个与左边元素进行比较。

insertion sort 插入排序

首先声明:我是一个菜鸟,还是一个屌丝,就我目前的水平以及态度,很难像结构之法,算法之道的July那样写出篇幅巨大,讲解透彻的文章。 但是,我会按照我的理解写,理解到哪就写到哪,力求做到即使你跟我一样...

插入排序Insertion sort

一、问题: 输入:n个数1,a2,a3,a4,…,an> 输出:输入序列的一个排列,使得a1≤a2≤a3≤a4≤…≤an          插入排序的原理类似我们打牌时整理手里牌一样,我们将每次...

Insertion Sort List 链表的插入排序

插入排序是假设前面一部分已经是有序的,后面A 不满足有序,则寻找前面有序序列的合适的位置,插入A。 插入排序默认第一个是有序状态。 假设我们有3 -> 5 -> 4 ->1 -> 2这样一个链表。...

插入排序(insertion sort)

插入排序是最简单的排序算法之一,其算法复杂度为O(n^2),最好的情况是O(n)。 算法简介 其实我们在打扑克牌时,就已经用到排序算法了。我们左手拿着的是已经排序号的扑克牌,右手从牌堆里抽取一张未...

算法导论-插入排序 insertion sort

插入排序------书中用了排手里的纸牌做例子,如果排序的对象是链表可能会更适合. 但对于数组,我想了个另外的例子更容易理解。   场景: 有8个小朋友坐在8个凳子上排成一排,老师想把小朋友按个头从低...

插入排序(Insertion Sort)

维基百科:http://zh.wikipedia.org/wiki/插入排序 算法思想: 若数组A[n]的前n-1个数已经有序,我们只需把第n个元素插入到适当的位置即可。易分析得算法的时间复杂度为...

插入排序Insertion Sort

... public class InsertionSort { public static void sort(int[] ints){ for(int fromIndex = 1; fr...

直接插入排序(Insertion Sort)

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。   设数组为a[0…n-1]。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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