Featured image of post Golang 冒泡 排序 选择排序 具体实现

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
}

参考

本文采用 CC BY 4.0 协议,转载请署名并注明出处。
最后更新于 2023-05-06 18:48:37
使用 Hugo 构建
主题 StackJimmy 设计