插入排序 【InsertionSort】

标签: InsertionSort 插入排序
1人阅读 评论(0) 收藏 举报
分类:

插入排序

插入排序的工作方式像排序一手扑克牌。 假设左手的牌是排序好的,桌面上的是未知的牌
1. 开始时,我们的左手为空并且桌子上的牌面向下。
2. 然后,我们每次从桌子上拿走一张牌并将它插入左手正确的位置。 为了找到插入的正确位置,我们将要插入的牌与左手的牌挨着比较,直接找到合适的位置并插入进去。

在实际的实现过程中,我们可以将数组的第0个元素看成是已经排序好的,然后从第二个元素开始进行插入。

算法实现

public class InsertionSort {

    public void insertionSort(int[] arr) {
        if(arr == null || arr.length < 2) {
            return ;
        }
        for (int i = 1; i < arr.length; i++) {
            for (int j = i; j > 0 && arr[j] < arr[j-1] ; j--) {
                swap(arr, j, j-1);
            }
        }
    }

    private void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp; 
    }
}

时间复杂度

因为每次插入的时候都需要去比较,所以时间复杂度为O(N^2)

稳定性

因为插入的数据是挨着顺序进入的,所以排序前后的相对顺序是不会改变的。所以是稳定的算法。

查看评论

插入排序(InsertionSort)

算法描述 对数组A[1...n]A[1...n]进行排序时,插入排序算法从左到右遍历整个数组,挨个将未排序元素从右到左和左边已经排好序的元素进行比较,直到找到第一个不大于它的元素时,将其插入作为该元...
  • u010383982
  • u010383982
  • 2016-04-19 20:18:10
  • 569

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

解析插入排序

先从一段代码说起: package insert; public class InsertSort { /** * @param args */ public static v...
  • liuwise
  • liuwise
  • 2012-08-24 10:11:39
  • 388

VB 插入法排序

  • 2010年06月07日 15:14
  • 37KB
  • 下载

VB简便15顺序

Private Sub Command1_Click() Cls Font.Size = 30 Dim a As Integer Dim sierdun(15) As Integer n = 1 W...
  • jinwanting1120
  • jinwanting1120
  • 2016-03-31 16:19:11
  • 211

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

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

C语言insertionsort

  • 2011年11月27日 03:16
  • 34KB
  • 下载

各种排序的实现

  • 2014年12月09日 19:44
  • 4KB
  • 下载

排序算法之插入排序<Insertion_Sort>及其C语言代码实现

概述 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出一个元素插入到已排好的序列中。它的算法步骤可以大致归纳如下: 1. 从未排好的序列中选出一个元素,并把它赋值给temp变量...
  • gl486546
  • gl486546
  • 2016-11-06 08:57:52
  • 3437

插入排序insertionSort

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。具体算法描述如下:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中...
  • shi1451042748
  • shi1451042748
  • 2016-02-19 21:14:15
  • 122
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1069
    排名: 4万+
    最新评论