go常见排序送给大家,自己手写的,个人原创

Posted 小扎克

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go常见排序送给大家,自己手写的,个人原创相关的知识,希望对你有一定的参考价值。

​https://github.com/zhangliu520/go_excises/blob/main/practise.go​


冒泡,堆栈,快排,选择等等

package main

import (
"fmt"
"math/rand"
)

//从小到大
type SF struct {
SArray []int
}

//冒泡
func (sf *SF) Bubble() []int {
length := len(sf.SArray)
for o := 0; o < length; o++ {
for i := 0; i < length-o-1; i++ {
if sf.SArray[i] > sf.SArray[i+1] {
sf.SArray[i], sf.SArray[i+1] = sf.SArray[i+1], sf.SArray[i]
}
}

}
return sf.SArray
}

//选择
func (sf *SF) Choice() []int {
length := len(sf.SArray)
for o := 0; o < length; o++ {
mimum := o
for i := o; i < length; i++ {
if sf.SArray[mimum] > sf.SArray[i] {
mimum = i
}
}
sf.SArray[o], sf.SArray[mimum] = sf.SArray[mimum], sf.SArray[o]

}
return sf.SArray
}

//插入
func (sf *SF) Insert() []int {
length := len(sf.SArray)
if length == 1 {
return sf.SArray
}
for o := 1; o < length; o++ {
for i := o - 1; i <= o; i-- {
if sf.SArray[i] > sf.SArray[i+1] {
sf.SArray[i], sf.SArray[i+1] = sf.SArray[i+1], sf.SArray[i]
} else {
break
}
}

}
return sf.SArray
}

func (sf *SF) pop(index int, sl []int) (int, []int) {
a := sl[index]
return a, append(sl[:index], sl[index+1:]...)
}

//快排
func (sf *SF) QuickSort(SArray []int) []int {
length := len(SArray)
if length < 2 {
return SArray
}
middle := int(length / 2)
value, SList := sf.pop(middle, SArray)
leftList := []int{}
rightList := []int{}
for _, i := range SList {
if i < value {
leftList = append(leftList, i)
} else {
rightList = append(rightList, i)
}
}
leftListIncursion := sf.QuickSort(leftList)
rightListIncursion := sf.QuickSort(rightList)
return append(append(leftListIncursion, value), rightListIncursion...)
}

//合并
func (sf *SF) Merge(SArray []int) []int {
length := len(SArray)
2021-2022秋招备战java个人珍藏版复习资料(最全)

面试官,不要再问我快速排序了!

不会吧,不会吧,不会还有人手写数据库说明文档吧? 使用go几行代码轻松导出数据库word文档

不会吧,不会吧,不会还有人手写数据库说明文档吧? 使用go几行代码轻松导出数据库word文档

不会吧,不会吧,不会还有人手写数据库说明文档吧? 使用go几行代码轻松导出数据库word文档

图解算法基础--快速排序,附 Go 代码实现