排序算法有哪些,简述快速排序的核心

2025-12-05 16:47:31
推荐回答(2个)
回答1:

简单的: 冒泡,选择排序,插入排序,桶排序,

复杂点的: 堆排序,归并排序,快速排序,

还有 基数排序,计数排序(这两个我还没接触到,不懂)

快速排序核心:

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样只能在相邻的数之间进行交换,交换的距离就大得多了。因此总的比较和交换次数就少了,速度自然就提高了。

                                                                 图片及快速排序简述来源于<啊哈算法>

回答2:

if values[i] <= temp && i <= p {
i++
}
if i <= p {
values[p] = values[i]
p = i
}
}
values[p] = temp
if p-left > 1 {
quickSort(values, left, p-1)
}
if right-p > 1 {
quickSort(values, p+1, right)
}
}

func QuickSort(values []int) {
if len(values) <= 1 {
return
}
quickSort(values, 0, len(values)-1)
}

// 第二种写法
func Quick2Sort(values []int) {
if len(values) <= 1 {
return
}
mid, i := values[0], 1
head, tail := 0, len(values)-1
for head < tail {
fmt.Println(values)