MENU

Golang 冒泡 排序 选择排序 具体实现

May 4, 2023 • Read: 517 • 随心笔记

最近在看一些看了又容易忘的知识点,虽然在业务代码中很少用,但在当下这种大环境下又不得不记,其实像在php中,各种sort函数是真好用...

package main

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

func sort() {
    var arr []int

    random := rand.New(rand.NewSource(time.Now().Unix()))
    for i := 0; i < 10; i++ {

        arr = append(arr, random.Intn(9999))
    }

    log.Println(arr)
    log.Println(insertion(arr))
}

// 插入排序
func insertion(arr []int) []int {
    for i := range arr {
        pre := i - 1
        current := arr[i]
        for pre >= 0 && arr[pre] > current {
            arr[pre+1] = arr[pre] // 前者比后大,则前者往后移空出位置
            pre -= 1
        }

        arr[pre+1] = current // 最后插进去
    }

    return arr
}

// 选择排序
func selection(arr []int) []int {
    var l = len(arr)
    for i := 0; i < l-1; i++ {
        minIndex := i
        for j := i + 1; j < l; j++ {
            if arr[minIndex] > arr[j] {

                minIndex = j
            }
        }

        if i != minIndex {

            arr[i], arr[minIndex] = arr[minIndex], arr[i]
        }
    }

    return arr
}

// 冒泡排序
func bubble(arr []int) []int {
    var l = len(arr)
    for i := 0; i < l-1; i++ {
        for j := 0; j < l-i-1; j++ {
            if arr[j] > arr[j+1] {

                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }

    return arr
}

参考

Last Modified: May 6, 2023