菜鸟算法
快速排序
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)
}