美文网首页
02-插入排序(完成)

02-插入排序(完成)

作者: 欢乐毅城 | 来源:发表于2020-08-11 21:49 被阅读0次

插入排序—— 稳点!!!

动态图:

插入排序.gif

一、概念:

  原理:如果数组进行循环得到a,若a比a前面的一个数小(大),则a就与前面数交换位置(相当于a向前面移动一位),若移动后a任然比前面一个数小(大),则再向前移动一位……

二、基本操作(步骤):

package main

import (
    "fmt"
    "math/rand"
    "time"
)

//1.
const (
    num      = 100000
    rangeNum = 100000
)

func main() {
    // fmt.Println(time.Now().Unix() , time.Now().UnixNano())
    randSeed := rand.New(rand.NewSource(time.Now().Unix() + time.Now().UnixNano()))
    var buf []int
    for i := 0; i < num; i++ {
        buf = append(buf, randSeed.Intn(rangeNum))
    }
    t := time.Now()
    // 插入排序
     charu(buf)
    fmt.Println(time.Since(t))  //求排序时间,与t := time.Now()配合
}
// 插入排序
func charu(buf []int) {
    times := 0
    for i := 1; i < len(buf); i++ {
        for j := i; j > 0; j-- {
            if buf[j] < buf[j-1] {
                times++
                tmp := buf[j-1]
                buf[j-1] = buf[j]
                buf[j] = tmp
            } else {
                break
            }
        }
    }
    fmt.Println("charu times: ", times)
}

三、时间复杂度与排序稳定性

时间复杂度: O(n^2)

平均时间复杂度:O(n²)
最好时间复杂度:O(n)
最坏时间复杂度:O(n²)
如果排序的数据是随机的,根据概率相同原则,平均⽐比较和移动的次数应为n²/4次,得出直接插
⼊入排序的时间复杂度为O(n²)。在同样的时间复杂度中直接插⼊入排序要优于选择排序和冒泡排序

空间复杂度:O(1)
稳定性:稳定

相关文章

  • 02-插入排序(完成)

    插入排序—— 稳点!!! 动态图: 一、概念:   原理:如果数组进行循环得到a,若a比a前面的一个数小(大),则...

  • 02-插入排序

    将一个无序数组分为两组前一组有序,后一组无序初始:序组中只有一个数据即arr[0];从第二组(无序)中依次取数据(...

  • 2019-10-22-每日三件事

    ①高分口语-APP-交付 未完成 原因,外出挑选装修事宜 ②佬丝02-交付 已完成 ③做好搬家的东西 已完成 ##...

  • 排序算法篇_插入排序法

      插入排序法(Insertion Sort)通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。插入排序算...

  • 插入排序算法

    插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。插入排序算法...

  • 排序算法

    ## 插入排序 ### 直接插入排序 原理: 在未排序序列中,构建一个子排序序列,直至全部数据排序完成 待排序的数...

  • Unity基础(18)-影音系统

    01-声音播放 02-视频播放 PC端MovieTexture优点:简单,高效的快速完成播放缺点:此种方法无法应用...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

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

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

  • 用Python实现常见的排序算法

    插入排序 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成 直接插入排序...

网友评论

      本文标题:02-插入排序(完成)

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