美文网首页
go(插入排序)

go(插入排序)

作者: 小王同学123321 | 来源:发表于2022-03-29 13:20 被阅读0次
package main

import "fmt"

//插入排序可以读取数据量比较大,内存装不下
func InserTest(arr []int) []int{
    backup := arr[2]
    j := 2-1
    for j>=0 && backup<arr[j]{
        arr[j+1]=arr[j]  //源数组中大的值往后移一位
        j--
    }
    arr[j+1]=backup
    return arr
}

//从左往右进行排序,左边一次存入较小的值
func InsertSort1(arr []int) []int{
    length := len(arr)
    if length <= 0{
        return arr
    }
    for i:=0;i<length-1;i++{
        fmt.Println("before:",arr)
        backup := arr[i+1]
        j := i
        for j >= 0 && backup < arr[j]{
            arr[j+1] = arr[j]
            j--
        }
        arr[j+1]=backup
        fmt.Println("after:",arr)
    }
    return arr
}


//从左往右进行排序,左边一次存入较大的值
func InsertSort2(arr []int) []int{
    length := len(arr)
    if length <= 0{
        return arr
    }
    for i:=0;i<length-1;i++{
        fmt.Println("before:",arr)
        backup := arr[i+1]
        j := i
        for j >= 0 && backup > arr[j]{
            arr[j+1] = arr[j]
            j--
        }
        arr[j+1]=backup
        fmt.Println("after:",arr)
    }
    return arr
}


//从右往左排序,右边一次存入较小的值
func InsertSort3(arr []int) []int{
    length := len(arr)
    if length <= 0{
        return arr
    }
    for i:=length-1;i>0;i--{
        fmt.Println(i,"before:",arr)
        backup := arr[i-1]
        j := i
        for j < length && backup < arr[j]{
           arr[j-1] = arr[j]
           j++
        }
        arr[j-1]=backup
        fmt.Println(i,"after:",arr)
    }
    return arr
}


//从右往左排序,右边一次存入较小的值
func InsertSort4(arr []int) []int{
    length := len(arr)
    if length <= 0{
        return arr
    }
    for i:=length-1;i>0;i--{
        fmt.Println(i,"before:",arr)
        backup := arr[i-1]
        j := i
        for j < length && backup > arr[j]{
            arr[j-1] = arr[j]
            j++
        }
        arr[j-1]=backup
        fmt.Println(i,"after:",arr)
    }
    return arr
}

func main(){
    arr := []int{0,1,19,11,29, 30, 2, 5, 45, 8, 234, 63, 12}
    //fmt.Println(InserTest(arr))
    fmt.Println(InsertSort4(arr))
}

相关文章

  • go(插入排序)

  • 插入排序算法 Go

    说明 插入排序,同样无需申请新的内存地址。相对选择排序算法运行速度稍快。 逻辑 从第二个元素开始与前一个元素大小相...

  • 插入排序 Go 语言实现

    插入排序适用于少量数据的排序,是一种稳定的排序方法时间复杂度:O(n^2)空间复杂度:O(1)

  • go之sort

    正如sort的含义,go的sort包提供排序的能力,其内部实现了堆排、快排、插入排序、希尔排序和归并排序,而且针对...

  • 选择排序、冒泡排序、插入排序、快速排序

    在工作中,常用的“选择排序”、“冒泡排序”、“插入排序”、“快速排序”这四种排序方式。我试着用go语言编写一下这四...

  • 算法-插入排序

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

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

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

  • (1)Go实现选择、冒泡、插入排序

    (1)选择排序(Selection sort)工作原理是每一次从待排序的 [数据元素] 中选出最小(或最大)的一个...

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

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

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

网友评论

      本文标题:go(插入排序)

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