摘要:
思路: 选定一个基准数,每次一轮排序完成后要满足基准数左边的都是比它小的数,右边的都是比它大的数。然后再分别对左表和右表进行同样的操作,直到所有排序完成。其实不难发现,每一轮排序都使得一个数(基准数)放在了它“正确的”位置上。 时间复杂度: O(nlogn)至O(n2),平均时间复杂度为O(nlog 阅读全文
摘要:
思路: 从第一个数开始,依次与下一个数比较,若下一个数比它小,则发生交换。这样每一次遍历都将其中最大的数冒泡到顶端,直到所有数冒泡完成则排序完成。 时间复杂度: 最好情况一次排序就完成,O(n)复杂度;最坏情况逆序,O(n2)复杂度。平均时间复杂度为O(n2)。 代码: 阅读全文
摘要:
快速幂 先来讨论整数的快速幂算法,相比于一般的计算a^b时间复杂度O(n),快速幂的复杂度是O(logn),效率要更高。比如要计算x^19,19的二进制表示是10011,分别找到二进制1出现的位置对应的数值,1,2,16。而19也正好可以写成1+2+16,所以x ^ 19 == (x ^ 1) *( 阅读全文