前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【算法】快速排序与归并排序对比

【算法】快速排序与归并排序对比

作者头像
韩曙亮
发布2023-03-29 14:56:16
6080
发布2023-03-29 14:56:16
举报
文章被收录于专栏:韩曙亮的移动开发专栏

算法 系列博客

【算法】刷题范围建议 和 代码规范

【算法】复杂度理论 ( 时间复杂度 )

【字符串】最长回文子串 ( 蛮力算法 )

【字符串】最长回文子串 ( 中心线枚举算法 )

【字符串】最长回文子串 ( 动态规划算法 ) ★

【字符串】字符串查找 ( 蛮力算法 )

【字符串】字符串查找 ( Rabin-Karp 算法 )

【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )

【算法】双指针算法 ( 有效回文串 II )

【算法】哈希表 ( 两数之和 )

【算法】快速排序

【算法】归并排序

【算法】快速排序与归并排序对比


文章目录

一、时间复杂度


快速排序 ( Quick Sort ) 与 归并排序 ( Merge Sort ) 的时间复杂度都是

O(n \log n)

;

快速排序 的 平均时间复杂度 是

O(n \log n)

, 该时间复杂度是一个期望值 , 快速排序在 最坏情况下会达到

O(n^2)

;

如 : 数组 1,2,3 排序 , 有 6 种排列方式 , 计算这 6 种排序时间复杂度的平均期望就是

O(n \log n)

;

最坏的情况时 1,2,3 排列情况 , 时间复杂度

O(n^2)

;

归并排序 的 最好情况下的时间复杂度 和 最坏情况下的时间复杂度 都是

O(n \log n)

;

从时间复杂度来讲 , 归并排序 的稳定性 要比 快速排序 高 , 二者时间复杂度相当 ;

二、空间复杂度


从空间复杂度来讲 , 归并排序 的空间复杂度是

O(n)

, 快速排序 的空间复杂度是

O(1)

, 快速排序没有使用额外的空间 , 在数组原地进行排序 ,

三、排序稳定性


排序的稳定性 : 假如数组中有两个相同的元素 , 给这两个相同的元素分别打上标记 , 如果每次排列得到的元素顺序都是相同的 , 则说明该排序是稳定的 ;

如 :

\{2,1,1,2\}

, 中给

2

打上标记 ,

\{2',1,1,2''\}

, 最终排序后是

\{1,1,2', 2''\}

还是

\{1,1,2'', 2'\}

;

快速排序中 , 这两个结果随机出现 , 同样使用快速排序 , 并不能保证得到的是相同的标记元素次序 ;

归并排序 , 可以保证 , 每次排序 , 得到的都是相同的结果 ;

三、局部有序与整体有序


快速排序 与 归并排序 , 都是将数组分为两个部分 , 然后两部分再次进行递归 ;

快速排序 随便选择了一个数组元素 p 作为中心点 , 将小于等于 p 的元素放在左边 , 将大于等于 p 的元素放在了右边 , 分割完毕后 , 左侧的元素肯定小于右侧的元素 ;

然后对左侧 和 右侧 再次分别选择一个元素 m , n , 进行分割 , 分为 4 份 ,

在 4 份的基础上 , 再次进行分割 , 分为 8 份 , 递归调用该快速排序算法 , 直到所有的元素有序为止 ;

快速排序 是 先整体有序 , 然后局部有序 ;

归并排序 先根据中心点分成两部分 , 左侧和右侧分别进行排序 , 两遍都排序完毕后 , 再组合到一起 ;

归并排序 是 先局部有序 , 然后整体有序 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法 系列博客
    • 文章目录
    • 一、时间复杂度
    • 二、空间复杂度
    • 三、排序稳定性
    • 三、局部有序与整体有序
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档