编辑代码

package main

import "fmt"

func main() {
	var arr1 = []int{12,34,6,8,9}
	bubbleSort(arr1)
	fmt.Println(arr1)

    var arr2 = []int{3,46,79,0,24}
    selectSort(arr2)
    fmt.Println(arr2)

    var arr3 = []int{73,4,32,1,3,5}
    insertSort(arr3)
    fmt.Println(arr3)

    var arr4 = []int{12, 21, 3, 101, 11, 4312, 2123, 1214265, 21}
	sortArr := quickSort(arr4)
    fmt.Println(sortArr)
}

// 冒泡排序
func bubbleSort(arr []int) {
    if len(arr) < 2 {
      return
    }
    for i:=0;i<len(arr);i++{
        flag := false
        for j:=0;j<len(arr)-1-i;j++{
            if arr[j]>arr[j+1]{
                arr[j],arr[j+1] = arr[j+1],arr[j]
                flag = true
            }
        }
        if !flag{
            break
        }
    }

}

//  选择排序
func selectSort(arr []int){
    if len(arr)<=0{
        return
    }
    for i:=0;i<len(arr)-1;i++{
        minIndex := i
        for j:=i+1;j<len(arr);j++{
               if arr[minIndex]>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++ {
		temp := arr[i]
		j := i - 1
		for j >= 0 && arr[j] > temp {
			arr[j+1] = arr[j]
			j--
		}
		arr[j+1] = temp
	}
}

// 希尔排序
func shellSort(arr []int) {
	for gap := len(arr) / 2; gap > 0; gap /= 2 {
		for i := gap; i < len(arr); i++ {
			temp := arr[i]
			j := i - gap
			for j >= 0 && arr[j] < temp {
				arr[j+gap] = arr[j]
				j -= gap
			}
			arr[j+gap] = temp
		}
	}
}

//  快速排序
func quickSort(arr []int) []int {
    if len(arr) <= 1 {
        return arr
    }

    pivotIndex := len(arr) / 2
    pivot := arr[pivotIndex]

    left := make([]int, 0)
    middle := make([]int, 0)
    right := make([]int, 0)

    for _, value := range arr {
        if value < pivot {
            left = append(left, value)
        } else if value == pivot {
            middle = append(middle, value)
        } else {
            right = append(right, value)
        }
    }

    left = quickSort(left)
    right = quickSort(right)

    left = append(left, middle...)
    left = append(left, right...)

    return left
}