10天光速入门go语言 常见排序算法

10天光速入门go语言 常见排序算法,第1张

概述转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.comew/638.html本文介绍了Go语言版经典的排序算法–快速排序、归并排序和堆排序。下面老男孩IT教育帮你解析一下。排序算法快速排序funcquickSort(data[]int){iflen(data)<=1{return}base:=

转载请注明来源"老男孩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语言 常见排序算法全部内容,希望文章能够帮你解决10天光速入门go语言 常见排序算法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存