开发者社区> 问答> 正文

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

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

展开
收起
知与谁同 2018-07-20 14:26:59 1381 0
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)
    2019-07-17 22:49:49
    赞同 展开评论 打赏
  • 简单的: 冒泡,选择排序,插入排序,桶排序,

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

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

    快速排序核心:

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

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

    2019-07-17 22:49:49
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载