快速排序算法go语言实现

package main

import "fmt"

func partition(array []int, i int, j int) int {
    //第一次调用使用数组的第一个元素当作基准元素
    pivot := array[i]
    for i < j {
        for j > i && array[j] > pivot {
            j--
        }
        if j > i {
            array[i] = array[j]
            i++
        }
        for i < j && array[i] < pivot {
            i++
        }
        if i < j {
            array[j] = array[i]
            j--
        }
    }
    array[i] = pivot
    return i
}

func quicksort(array []int, low int, high int) {
    var pivotPos int //划分基准元素索引
    if low < high {
        pivotPos = partition(array, low, high)
        quicksort(array, low, pivotPos-1)
        quicksort(array, pivotPos+1, high)
    }
}

func main() {
    var arr = []int{5, 2, 1, 4, 3}
    quicksort(arr, 0, len(arr)-1)
    fmt.Println(arr)
}

猜你喜欢

转载自www.cnblogs.com/beanbag/p/10876947.html