目录

1.选择排序

2.冒泡排序

3.Golang 内置 Sort 包对切片进行排序

3.1 sort包的文档

3.2 sort的升序排序

3.3sort 降序排序


1.选择排序

选择排序:进行从小到大排序 概念: 通过比较,首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。

package main

import "fmt"

func main() {

	var SliceA = []int{7, 6, 5, 4, 3, 1, 2}

	for i := 0; i < len(SliceA); i++ {
		for j := i + 1; j < len(SliceA); j++ {

			if SliceA[i] > SliceA[j] {
				temp := SliceA[i]
				SliceA[i] = SliceA[j]
				SliceA[j] = temp

			}
		}

	}
	fmt.Println(SliceA)

}

2.冒泡排序

概念:从头到尾,比较相邻的两个元素的大小,如果符合交换条件,交换两个元素的位置。

特点:每一轮比较中,都会选出一个最大的数,放在正确的位置。

package main

import "fmt"

func main() {

	var SliceA = []int{7, 6, 5, 4, 3, 1, 2}

	for i := 0; i < len(SliceA)-1; i++ {
// 每一轮结束后,最大的元素会被移到最后,所以内层循环可以减少一次遍历
		for j := 0; j < len(SliceA)-i-1; j++ {

			if SliceA[i] > SliceA[j] {
				temp := SliceA[i]
				SliceA[i] = SliceA[j]
				SliceA[j] = temp

			}
		}

	}
	fmt.Println(SliceA)

}

3.Golang 内置 Sort 包对切片进行排序

3.1 sort包的文档

Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 (studygolang.com)icon-default.png?t=O83Ahttps://studygolang.com/pkgdoc

3.2 sort的升序排序

对于 int 、 float64 和 string 数组或是切片的排序, go 分别提供了 sort.Ints() 、 sort.Float64s() 和 sort.Strings() 函数, 默认都是从小到大排序。

package main

import (
	"fmt"
	"sort"
)

func main() {
	intList := []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}
	float8List := []float64{4.2, 5.9, 12.4, 10.2, 50.7, 99.9, 31.4, 27.81828, 3.14}
	stringList := []string{"a", "c", "b", "z", "x", "w", "y", "d", "f", "i"}
	sort.Ints(intList)
	sort.Float64s(float8List)
	sort.Strings(stringList)
	fmt.Println(intList)    //[0 1 2 3 4 5 6 7 8 9]
	fmt.Println(float8List) //[3.14 4.2 5.9 10.2 12.4 27.81828 31.4 50.7 99.9]
	fmt.Println(stringList) //[a b c d f i w x y z]

}

3.3sort 降序排序

Golang 的 sort 包 可 以 使 用 sort.Reverse(slice) 来 调 换 slice.Interface.Less ,也就是比较函数,所以, int 、 float64 和 string 的逆序排序函数可以这么写。

package main

import (
	"fmt"
	"sort"
)

func main() {
	intList := []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}
	float8List := []float64{4.2, 5.9, 12.4, 10.2, 50.7, 99.9, 31.4, 27.81828, 3.14}
	stringList := []string{"a", "c", "b", "z", "x", "w", "y", "d", "f", "i"}
	sort.Sort(sort.Reverse(sort.IntSlice(intList)))
	sort.Sort(sort.Reverse(sort.Float64Slice(float8List)))
	sort.Sort(sort.Reverse(sort.StringSlice(stringList)))
	fmt.Printf("%v\n%v\n%v\n", intList, float8List, stringList)

}

//输出结果
[9 8 7 6 5 4 3 2 1 0]
[99.9 50.7 31.4 27.81828 12.4 10.2 5.9 4.2 3.14]
[z y x w i f d c b a]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐