快速排序

2019-01-12  本文已影响0人  messy_code
package main

import (
    "fmt"
    "math/rand"
)

func main() {
    arr := make([]int, 20)
    for i := 0; i < 20; i++ {
        arr[i] = rand.Intn(100)
    }
    fmt.Println(arr)
    QuaitSort(arr)
    fmt.Println(arr)
}

func QuaitSort(arr []int) {
    doQuaitSort(arr, 0, len(arr)-1)
}

func doQuaitSort(arr []int, s, e int) {
    if s >= e {
        return
    }
    p := arr[s]
    l, r := s+1, e
    for l < r {
        for l < r && p < arr[r] {
            r--
        }
        for l < r && arr[l] < p {
            l++
        }
        arr[l], arr[r] = arr[r], arr[l]
    }
    if arr[l] > p {
        arr[s], arr[l-1] = arr[l-1], p
    } else {
        arr[s], arr[l] = arr[l], p
    }
    doQuaitSort(arr, s, l-1)
    doQuaitSort(arr, l+1, e)
}
上一篇 下一篇

猜你喜欢

热点阅读