快速排序和归并排序的比较

本文对比了两种经典的排序算法——快速排序和归并排序。快速排序在分治思想下实现,时间复杂度在最好、最坏和平均情况下分别为O(nlogn)、O(n^2)和O(nlogn),空间复杂度在最好、最坏情况下为O(logn)和O(n)。归并排序始终保持O(nlogn)的时间复杂度,但其空间复杂度在最坏情况下达到O(n)。
摘要由CSDN通过智能技术生成

快速排序和归并排序的分析比较

快速排序归并排序
设计思想快速排序算法是在分治算法基础上设计出来的一种排序算法,从待排序序列中任选一个元素x作为哨点,(以按从小到大排序为例)将所有比x大的元素放到哨点右边,将所有比x小的元素放到哨点左边。再将x左右两边的子序列看做两个待排序序列,重复上一步操作,直至子序列都不可再分,整个序列就已有序。采用分治策略, 先递归的把数组划分为两个子数组,一直递归到数组中只有一个元素,然后再调用函数把两个子数组排好序,因为该函数在递归划分数组时会被压入栈,所以这个函数真正的作用是对两个有序的子数组进行排序。
时间复杂性最好:O(nlogn) 最坏:O(n*n) 平均: O(nlogn)最好:O(nlogn) 最坏:O(nlogn) 平均: O(nlogn)
空间复杂性最好:O(logn) 最坏:O(n) 平均: O(logn)最好:O(n) 最坏:O(n) 平均: O(n)
稳定性快速排序的时间复杂度和空间复杂度会根据原始数据的排列情况而变化,所以快速排序的时间复杂度和空间复杂度都不是稳定的。时间复杂度是非常稳定的,不管是最好情况、最坏情况,还是平均情况,时间复杂度都是 O(nlogn)。虽然递归次数是O(logn),但每次递归都会释放掉所占的辅助空间,因而空间复杂度是O(n)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值