菜鸟算法-快速排序

菜鸟算法

快速排序

func QuickSorter(array *[]int, start int, end int) {
        if start > end {
                return
        }

        pivot, head, tail := start, start, end

        for head < tail {
                // 移动尾指针 寻找小于基准值的数 (这里基准值选取的是头部数,所以先移动尾指针)
                for (*array)[tail] >= (*array)[pivot] && head < tail {
                        tail--
                }
                // 移动头指针 寻找大于基准值的数
                for (*array)[head] <= (*array)[pivot] && head < tail {
                        head++
                }

                if head < tail {
                        (*array)[head], (*array)[tail] = (*array)[tail], (*array)[head]
                } else {
                        // 将基准值归位
                        (*array)[pivot], (*array)[head] = (*array)[head], (*array)[pivot]
                }
        }

        QuickSorter(array, start, head-1)
        QuickSorter(array, head+1, end)
}
执行结果

你可能感兴趣的:(菜鸟算法-快速排序)