Golang 排序
冒泡排序
package main
import "fmt"
func main(){
nums := []int{2,3,8,4,6,12,3,4,59,1,2,7}
fmt.Println(nums)
fmt.Println(bubbleSort(nums))
}
func bubbleSort(nums []int) []int{
if len(nums) < 2{
return nums
}
for i:=0;i<=len(nums)-1;i++{
for j:=i;j<=len(nums)-1;j++{
if nums[i] > nums[j]{
nums[i],nums[j] = nums[j],nums[i]
}
}
}
return nums
}
选择排序
package main
import (
"fmt"
)
func main(){
nums := []int{2,3,8,4,6,12,3,4,59,1,2,7}
fmt.Println(nums)
fmt.Println(selectionSort(nums))
}
func selectionSort(nums []int) []int{
if len(nums) < 2{
return nums
}
for i:=0;i<len(nums)-1;i++{
min := i
for j:=i+1;j<len(nums);j++{
if nums[j] < nums[min]{
min = j
}
}
if nums[i] >= nums[min]{
nums[i],nums[min] = nums[min],nums[i]
}
}
return nums
}
插入排序
package main
import "fmt"
func main() {
nums := [5]int{10, 54, 36, 89, -1}
fmt.Println("nums = ", nums)
InsertSort(&nums)
fmt.Println("nums = ", nums)
}
func InsertSort(arr *[5]int) {
for i := 1; i <= len(arr)-1; i++ {
for j := i; j > 0; j-- {
if arr[j-1] > arr[j] {
arr[j-1], arr[j] = arr[j], arr[j-1]
}
}
}
}
快速排序
package main
import "fmt"
func main(){
nums := []int{2,3,8,4,6,12,3,4,59,1,2,7}
fmt.Println(nums)
fmt.Println(quickSort(nums,0,len(nums)-1))
}
func quickSort(nums []int,low,high int) []int{
if low < high{
pivot := partition(nums,low,high)
quickSort(nums,low,pivot-1)
quickSort(nums,pivot+1,high)
}
return nums
}
func partition(list []int, low, high int) int {
tmp := list[low]
for low < high{
if low < high && tmp <= list[high]{
high--
}
list[low] = list[high]
if low < high && tmp >= list[low]{
low++
}
list[high] = list[low]
}
list[low] = tmp
return low
}