algorithm - 为什么算法第四版中快速排序的最坏情况成本与我计算的成本不匹配?

标签 algorithm sorting

我正在阅读《算法》第四版,它告诉我快速排序在最坏情况下使用 ~N^2/2 进行比较,因为 N+(N-1)+(N-2)+...+2 +1=(N+1)N/2。然而,书上还告诉我,分区的成本始终是N+1。所以我想知道为什么最坏情况的成本不是 (N+1)+(N-1+1)+(N-2+1)+...+(2+1)+0 = (N+ 1)+N+...+3=(N+4)(N-1)/2?

最佳答案

他们犯傻了?快速排序分区需要将主元与每个其他元素进行比较,这正是 N−1 次比较。在最坏的情况下,每次的主元要么是最小元素,要么是最大元素,因此总比较次数为 (N−1) + (N−2) + … + 1 + 0 = N(N−1)/2,全部成对。

关于algorithm - 为什么算法第四版中快速排序的最坏情况成本与我计算的成本不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76333774/

相关文章:

javascript - 如何停止 Bootstrap-3-Typeahead 下拉列表按排序顺序显示元素

excel - Excel VBA查找重复项并发布到其他工作表

c# - 如何使用 C# 按顺时针方向打印 4x4 数组

java - 如何筛选其中包含 WebElement 的列表

php - 使用两个条件自定义排序数组数组

python - 为什么我不能通过 pygtrie 在 trie 中添加单词?

根据哈希表的条目值(而不是键)对哈希表进行排序

javascript - 如何在 DOM 元素中查找所有文本及其父元素

java - 最大乘积子数组的范围(Kadane 算法变体)

c - 为什么我在尝试传递数组值时收到 "incompatible pointer type"?