我在 C 中实现了一个快速排序实现,我试图找出导致更差情况性能所需的输入。
根据维基百科:
总是以这种方式选择分区中的最后一个元素作为枢轴会导致已排序列表或相同元素列表的性能不佳 (n^2)。
所以我尝试这样做,结果如下代码。枢轴始终是最后一个元素,输入是已经排序的列表。
为了证明复杂度确实是 n^2,我创建了一个全局变量,我在每次迭代中递增,然后最后打印它。
我预计该程序会打印:
Done in 64 iterations
但是,它在 28 次迭代中完成了。也许我对“复杂性”一词的理解是错误的?