排序算法用golang实现。
冒泡排序
选择排序
插入排序
快速排序
希尔排序
https://blog.csdn.net/qq_36520153/article/details/82886403
package main
import "fmt"
func main() {
arr := []int{54, 665, 4, 2123, 1, 857, 96, 52, 66, 2345, 687, 31231, 5, 45, 1, 21, 3, 456, 132, 1, 85}
//GuluguluSort(arr)
//SelectSort(arr)
//InsertSort(arr)
FastSort(0, len(arr)-1,arr)
fmt.Println(arr)
}
// 冒泡排序。
func GuluguluSort(arr []int) {
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-i-1; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
}
// 选择排序
func SelectSort(arr []int) {
for i := 0; i < len(arr)-1; i++ {
min := arr[i]
minIndex := i
for j := i + 1; j < len(arr); j++ {
if arr[j] < min {
min = arr[j]
minIndex = j
}
}
if minIndex != i {
arr[minIndex], arr[i] = arr[i], arr[minIndex]
}
}
}
//插入排序
func InsertSort(arr []int) {
for i := 1; i < len(arr); i++ {
insertVal := arr[i]
insertIndex := i - 1
for insertIndex >= 0 && arr[insertIndex] > insertVal {
arr[insertIndex+1 ] = arr[insertIndex]
insertIndex--
}
if insertIndex+1 != i {
arr[insertIndex+1] = insertVal
}
}
}
//快速排序
func FastSort(left, right int, arr []int) {
l := left
r:= right
local := arr[(left+right)/2]
for ;l <r; {
for ;arr[l]<local; {
l++
}
for ;arr[r]>local ; {
r--
}
//表示l和r相交,此时l和r的值相等
if l==r {
break
}
arr[l],arr[r] = arr[r],arr[l]
if arr[l]==local {
r--
}
if arr[r] == local {
l++
}
}
if l<=r {
l++
r--
}
if left < r {
FastSort(left,r,arr)
}
if l<right {
FastSort(l,right,arr)
}
}