堆排序的最优算法复杂度为什么是O(nlgn)而不是O(n)呢?
想象这样一个场景,如果堆中所有的元素都是相同的,那么每次调整堆的时候进行堆顶元素和堆尾元素交换之后,不需要进行堆的调整,之后的n个元素都这么做就好了,这样的排序时间复杂度不是O(n)吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
想象这样一个场景,如果堆中所有的元素都是相同的,那么每次调整堆的时候进行堆顶元素和堆尾元素交换之后,不需要进行堆的调整,之后的n个元素都这么做就好了,这样的排序时间复杂度不是O(n)吗
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
https://en.wikipedia.org/wiki...
就是 n,不要太过相信那些网上博文写的,另外代码不同,也可能导致 nlogn。比如维基上的,写的也是nlogn(是n,写错了)。
https://zh.wikipedia.org/zh/%...
----------------------------------更改------------------------
被你带坑里了,最佳复杂度的数据是待排序数组就是目标数组(就是若升序排序,恰好数组是升序的),不是元素都是相同的,所以上面的也是n,不是nlogn。
只是省去了调整的时间,元素间的比较次数依然是nlgn