快速排序

原理

1丶设置第一个元素为标记数
2、将小于标记数的放在标记数的左边,大于中间数的放在中间数的右边
3、左边所有元素执行1操作做,右边所有元素执行1操作

Go代码

package main

import (
    "fmt"
)

func main() {
    arr := []int{4, 3, 9, 6}
    sort(arr)
}
func sort(arr []int) {
    merge(arr, 0, len(arr)-1)

}

func merge(arr []int, start int, end int) {
    if start >= end {
        return

    }
    key := arr[start]
    li := start
    ri := end
    for li != ri {
        for li < ri && arr[ri] >= key {
            ri--

        }
        for li < ri && arr[li] <= key {
            li++

        }

        if li < ri {
            arr[li], arr[ri] = arr[ri], arr[li]

        }
    }

    arr[li], arr[start] = key, arr[li]
    merge(arr, start, li-1)
    merge(arr, li+1, end)
}


你可能感兴趣的:(快速排序)