10天光速入门go语言 常见排序算法
2021/5/17 20:26:59
本文主要是介绍10天光速入门go语言 常见排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
转载请注明来源"老男孩IT教育"
来源网址:https://www.sholdboyedu.com/new/638.html
本文介绍了Go语言版经典的排序算法–快速排序、归并排序和堆排序。下面老男孩IT教育帮你解析一下。
排序算法
快速排序
func quickSort(data []int) {
if len(data) <= 1 {
return
}
base := data[0]
l, r := 0, len(data)-1
for i := 1; i <= r; {
if data[i] > base {
data[i], data[r] = data[r], data[i]
r–
} else {
data[i], data[l] = data[l], data[i]
l++
i++
}
}
quickSort(data[:l])
quickSort(data[l+1:])
}
func main() {
s := make([]int, 0, 16)
for i := 0; i < 16; i++ {
s = append(s, rand.Intn(100))
}
fmt.Println(s)
quickSort(s)
fmt.Println(s)
}
归并排序
func mergeSort(data []int) []int {
length := len(data)
if length <= 1 {
return data
}
num := length / 2
left := mergeSort(data[:num])
right := mergeSort(data[num:])
return merge(left, right)
}
func merge(left, right []int) (result []int) {
l, r := 0, 0
for l < len(left) && r < len(right) {
if left[l] < right[r] {
result = append(result, left[l])
l++
} else {
result = append(result, right[r])
r++
}
}
result = append(result, left[l:]…)
result = append(result, right[r:]…)
return
}
func main() {
s := make([]int, 0, 16)
for i := 0; i < 16; i++ {
s = append(s, rand.Intn(100))
}
fmt.Println(s)
s = mergeSort(s)
fmt.Println(s)
}
堆排序
Copy
func heapSort(array []int) {
m := len(array)
s := m / 2
for i := s; i > -1; i-- {
heap(array, i, m-1)
}
for i := m - 1; i > 0; i-- {
array[i], array[0] = array[0], array[i]
heap(array, 0, i-1)
}
}
func heap(array []int, i, end int) {
l := 2*i + 1
if l > end {
return
}
n := l
r := 2*i + 2
if r <= end && array[r] > array[l] {
n = r
}
if array[i] > array[n] {
return
}
array[n], array[i] = array[i], array[n]
heap(array, n, end)
}
func main() {
s := make([]int, 0, 16)
for i := 0; i < 16; i++ {
s = append(s, rand.Intn(100))
}
fmt.Println(s)
heapSort(s)
fmt.Println(s)
}
试听课程热线:18721913912 QQ裙:594235772
新猿教育: Python linux GO 网络安全、脱产、网络课程
实战教学,拒绝纸上谈兵。
这篇关于10天光速入门go语言 常见排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26go.mod的文件内容是什么?-icode9专业技术文章分享
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼