GO简单算法模板之1快速排序

79 阅读1分钟

package main

import "fmt"

func main(){
    var n int
    fmt.Scanf("%d",&n)
    arr :=make([]int,n)
    for i:=0;i < n;i++{
        fmt.Scanf("%d",&arr[i])
    }
    quicksort(arr[]int,o,n-1)
    for i :=0;i<n;i++{
        fmt.Printf("%d ",arr[i])
    }
}
quicksort(arr []int ,l,r int){
        if l>=r{
        return
    }
        x:=arr[(l+r)/2]
        i , j:= l-1,r+1
        for i<j{
            for {
                i++
                if arr[i] >= x{
                    break
                }
            }
            for {
                j--
                if arr[j]<=x{
                    break
                }
            }
            if i<j{
                arr[i],arr[j]=arr[j],arr[i]
            }
    }
    quicksort(arr,l,j)
    quicksort(arr,j+1,r)
}