美文网首页
插入排序

插入排序

作者: hszz | 来源:发表于2020-11-03 15:21 被阅读0次

排序简介

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从右向左扫描
  3. 如果被扫描的元素(已排序)大于新元素,将该元素右移一位
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤2~5

复杂度

  • 最佳情况:T(n) = O(n)
  • 最坏情况:T(n) = O(n2)
  • 平均情况:T(n) = O(n2)
  • 空间复杂度:O(1)
  • 稳定性:稳定
  • 排序方式:In-place

golang实现

package main

import "fmt"

//插入排序
func InsertionSort(arr []int) {
    for i := 1; i < len(arr); i++ {
        temp := arr[i]
        j := i
        for ; j > 0; j-- {
            if arr[j-1] > temp {
                arr[j] = arr[j-1]
            }else {
                break
            }
        }
        arr[j] = temp
        fmt.Println(arr)
    }
}

func main()  {
    arr := []int{33,11,55,7,44,1}
    InsertionSort(arr)
}

相关文章

网友评论

      本文标题:插入排序

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