美文网首页数据结构
内排序1:插入排序

内排序1:插入排序

作者: 玲儿珑 | 来源:发表于2020-05-04 01:57 被阅读0次

插入排序有几种,这里讨论的是简单插入排序法,也称为直接插入排序法

基本思想:第i趟排序是将第i+1个元素ki+1(i=1,2,...,n-1)插入到一个已经按值有序的子序列(k1,k2,...,k`i)的合适位置,得到一个长度为i+1且仍然按值有序的子序列(k1,k2,...,ki,ki+1)。插入方法的核心动作是插入,而寻找被插入元素的合适位置是主要工作。
算法如下:

function insertSort(arr) {
    let n = arr.length
    let i, j, temp
    for ( i=1; i<n; i++) {
        temp = arr[i]
        j = i-1
        while ( j>=0 && temp<arr[j] ) {
            arr[j+1] = arr[j--]
        }
        arr[j+1] = temp
    }
    return arr
}

let arr = [5,3,8,1,9,2,7,4,6,10]
insertSort(arr)

性能:
时间复杂度:最坏时O(n2),最好时O(n)。是稳定性排序方法。

基本思想:由于每一趟被插入的子序列为一个按值有序的序列,因而可以采用 折半查找方法 来确定被插入元素在该有序排序中的合适位置。
算法如下:

function bin_insertSort(arr) {
    let n = arr.length
    let low, high, mid, i, j, temp
    for( i=1; i<n; i++ ) {
        temp = arr[i]
        low = 0
        high = i-1
        while ( low<=high ) {
            mid = Math.floor((low+high)/2)
            if ( temp<arr[mid] ) {
                high = mid-1
            } else {
                low = mid+1
            }
        }
        for( j=i-1; j>=low; j-- ) {
            arr[j+1] = arr[j]
        }
        arr[low] = temp
    }
    return arr
}

let arr = [5,3,8,1,9,2,7,4,6,10]
bin_insertSort(arr) 

性能:
时间复杂度:最坏时O(n2),最耗时O(nlog2n)。

相关文章

  • 排序算法

    内排序(全部记录放在内存中)有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。(2)...

  • 一遍文章搞定插入排序-java版

    插入排序 1.1 插入排序的基本介绍 插入排序属于内排,就是以插入的方式来达到排序的目的 1.2 插入排序思想 将...

  • 排序算法时间复杂度对比

    内排序主要分为四类:插入排序类、选择排序类、交换排序类、归并排序类。 插入排序类 直接插入排序 希尔排序 选择排序...

  • 内排序1:插入排序

    插入排序有几种,这里讨论的是简单插入排序法,也称为直接插入排序法。 基本思想:第i趟排序是将第i+1个元素ki+1...

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • 7大排序算法

    一、排序算法分类 1.外排序:需要在内外存之间多次交换数据 2. 内排序:只在内存中进行 插入排序类直接插入排序希...

  • 算法(排序)

    一、内部排序 1、插入排序—直接插入排序(Straight Insertion Sort) 2、插入排序—希尔排序...

  • Java学习记录(常用 算法 排序 )

    排序算法的分类如下: 1.插入排序(直接插入排序、折半插入排序、希尔排序);2.交换排序(冒泡泡排序、快速排序);...

  • 九种排序算法(重要!!)

    分类:(九种排序算法) 1、插入排序:直接插入排序、二分插入排序、希尔排序; 2、选择排序:简单选择排序、堆排序 ...

  • 排序——插入排序

    业精于勤荒于嬉 插入排序包括:直接插入排序、折半插入排序、希尔排序(缩小增量排序) 一、直接插入排序 1. 算法思...

网友评论

    本文标题:内排序1:插入排序

    本文链接:https://www.haomeiwen.com/subject/yabsghtx.html