Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从第一性原理分析快速排序的复杂性_Algorithm_Complexity Theory - Fatal编程技术网

Algorithm 从第一性原理分析快速排序的复杂性

Algorithm 从第一性原理分析快速排序的复杂性,algorithm,complexity-theory,Algorithm,Complexity Theory,我正在努力学习复杂性分析,以及如何从第一原理开始进行复杂性分析。以快速排序为例,我希望能够推导出该算法的平均案例复杂度的O表示法表达式 我知道快速排序是O(nlog(n)),我理解为什么每次迭代都要传递n个元素,递归深度是logn。但我不知道你会如何用第一原理来说明这一点,即计算原始操作。Knuth,《计算机编程艺术》第3卷(排序和搜索),第5.2.2节(按交换排序),详细分析了快速排序的具体实现(当然是混合排序)。他可能是世界上唯一一个愿意亲自做这种分析的人,供人类食用。这一点在维基百科上有详

我正在努力学习复杂性分析,以及如何从第一原理开始进行复杂性分析。以快速排序为例,我希望能够推导出该算法的平均案例复杂度的O表示法表达式


我知道快速排序是O(nlog(n)),我理解为什么每次迭代都要传递n个元素,递归深度是logn。但我不知道你会如何用第一原理来说明这一点,即计算原始操作。

Knuth,《计算机编程艺术》第3卷(排序和搜索),第5.2.2节(按交换排序),详细分析了快速排序的具体实现(当然是混合排序)。他可能是世界上唯一一个愿意亲自做这种分析的人,供人类食用。

这一点在维基百科上有详细介绍。关于科曼参考文献,请参见+1。但是关于从“第一原则”推导复杂性。“第一原则”不意味着计算原始操作数吗?@Jim_CS:你不需要计算单个原始操作数。每次迭代/递归都有10次还是100次操作并不重要,只要这个数字是常量。增长是由迭代/递归的数量控制的。与其结束这个问题,我认为值得把维基百科的参考放在一个答案中并投票表决。