堆排由两部分组成:
1.建初堆
2.堆顶元素与堆中的最后一个元素交换并重建堆。
建初堆的复杂度已经有人证明如下:
下来就是第二步的复杂度了:
总共交换n-1次,每次重建堆的复杂度是log2n,所以第二步的复杂度为[log2(n-1)+log2(n-2)+...+log2(2)]<nlog2(n)
因此堆排的算法复杂度<O(n)+nlog2(n),也就近似的认为是nlog2(n)。
堆排由两部分组成:
1.建初堆
2.堆顶元素与堆中的最后一个元素交换并重建堆。
建初堆的复杂度已经有人证明如下:
下来就是第二步的复杂度了:
总共交换n-1次,每次重建堆的复杂度是log2n,所以第二步的复杂度为[log2(n-1)+log2(n-2)+...+log2(2)]<nlog2(n)
因此堆排的算法复杂度<O(n)+nlog2(n),也就近似的认为是nlog2(n)。