美文网首页On lzq ways
排序算法二(快排,合并)

排序算法二(快排,合并)

作者: zhengqiuliu | 来源:发表于2019-04-25 15:54 被阅读6次

现在依旧很清晰记得大二时候学习快速排序时,总是没有办法梳理清晰,当时为了应付考试只能硬着头皮把算法的过程记住,考试的时候总是还会忘记,没有掌握快排的原理。前段时间,闲来无事,自己再回顾了一下教科书上的快速排序,发现教科书写得有些晦涩难懂,还是有些摸棱两可。今天正好把当年的痛处再来总结一把。

快速排序和合并排序,这两种排序都使用了分区治理的思想。

合并排序:把一个大的数据集拆分成各个小的数据集,当拆分到单个数据集时,再使用合并规则来两两合并,变成一个有序的数据集。其重点落在合并逻辑上,就是把两个有序的集合合并成为一个集合。

合并排序:不属于原地排序,属于稳定排序,时间复杂度为O(nlogn)

快速排序:把一个大的数据集拆分成小的数据集,每次拆分都有一个拆分点,拆分点左边的数据都小于拆分点值,拆分点右边的数据都大于拆分点值。然后不停拆分,直到单个数据集。其重点落在拆分过程,与合并排序正好相反。

快速排序:属于原地排序,但是不属于稳定排序,最坏时间复杂度为O(n^2),平均时间复杂度为O(nlogn)。

show me code:

合并排序:

快速排序:

相关文章

  • 排序算法二(快排,合并)

    现在依旧很清晰记得大二时候学习快速排序时,总是没有办法梳理清晰,当时为了应付考试只能硬着头皮把算法的过程记住,考试...

  • 算法

    【原创】以下是自己写的某些算法的JS实现 快排 (一) 快排(二) 希尔排序 插排 二分插排 归并排序

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 常用排序算法

    常见排序算法 本文介绍6种常用排序算法,包括冒泡、选择、插入、快排、堆排、希尔排序。下面从排序算法的原理、解题步骤...

  • 2018-07-13

    快速排序算法 快排普通版本: 快排优化版本: 测试代码:

  • 基本排序算法

    冒泡算法 简单选择排序 堆排序 快排 归并排序

  • 算法

    查找:二分查找 排序 快排基于快排思想解决的问题partition,第k大的数字 归并 几种排序算法的时间复杂度,...

  • 数据结构与算法-排序/二分查找

    算法中基础中的基础,排序/二分查找 排序 1.快排QuickSort 归并排序 堆排序 1. 二分查找

  • Objective-c各种排序算法

    Objective-C排序算法 快排 快速排序是面试中经常会被问的一个排序算法。一般要求手写。快排是对冒泡排序的一...

  • 数组排序问题(二)

    目录 荷兰国旗问题 随机快排 堆排序 排序算法的稳定性及其汇总 工程中的综合排序算法 比较器的使用 桶排序、计数排...

网友评论

    本文标题:排序算法二(快排,合并)

    本文链接:https://www.haomeiwen.com/subject/nulzgqtx.html