为什么比较排序时间复杂度是O(nlogN)

本文通过决策树模型证明了仅使用比较操作的排序算法的时间复杂度下限为O(nlogn)。文中详细介绍了决策树的概念及其与排序算法的关系,并通过数学推导展示了为什么桶排序等算法可以突破这一限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在树的大部分操作中,我们首先

只用到比较的排序算法最低时间复杂度是O(nlogn),而像桶排这样的只需要O(R)(R为桶的大小)

为了证明只用到比较的排序算法最低时间复杂度是O(nlogn),首先要引入决策树。

首先,决策树是一颗二叉树,每个节点表示元素之间一组可能的排序,它予以京进行的比较相一致,比较的结果是树的边。

先来说明一些二叉树的性质,令T是深度为d的二叉树,则T最多有2^片树叶。具有L片树叶的二叉树的深度至少是logL。所以,对n个元素排序的决策树必然有n!片树叶(因为n个数有n!种不同的大小关系),所以决策树的深度至少是log(n!),即至少需要log(n!)次比较。

而 log(n!)=logn+log(n-1)+log(n-2)+...+log2+log1 >=logn+log(n-1)+log(n-2)+...+log(n/2) >=(n/2)log(n/2) >=(n/2)logn-n/2 =O(nlogn)

所以只用到比较的排序算法最低时间复杂度是O(nlogn)。

转载于:https://www.cnblogs.com/pxguoo/archive/2011/08/02/2125148.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值