我认为我理解。
在最坏的情况下,快速排序算法选择列表/数组中的最大或最小键,以便为每个递归调用进行排序(如果是递归实现)。我知道n的大小将决定递归调用的数量和比较的数量(每次递归时它将减少1)。所以我们总共有n +(n-1)+(n-2)+ ... + 2 + 1个原始比较。
我不明白。
我不太了解的部分是O(n ^ 2)?我知道它至少是O(n ^ 2),因为n +(n-1)+(n-2)+ ... + 2 + 1< n ^ 2但我怎么知道它不是说O(n * logn)?我是否必须证明结果能够安全地确认它是O(n ^ 2)还是以我看不到的方式立即明显?我想一般我怎么知道我找到了代表大O时间复杂度的最低函数。
答案 0 :(得分:3)
n +(n-1)+(n-2)+ ... + 1 = n(n + 1)/ 2(你可以通过数学归纳证明它),显然是O(n ^ 2)。
https://en.wikipedia.org/wiki/1_%2B_2_%2B_3_%2B_4_%2B_%E2%8B%AF