摘要:
动态规划与分治法相似,都是通过组合子问题的解来求解原问题(Programming在这里指的是一种表格法,并非是编写计算机程序),但是又有所不同: 分治法将问题分解为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解。 动态规划适合求解最优化问题(optimization prob 阅读全文
摘要:
问题 逆序:在序列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。 逆序数:序列中逆序的总数量。 例如,在数列{3,6,7,8,2}中,{3,2},{6,2},{7,2},{8,2}都是逆序。 思路 暴力法 暴力求解就是一个个地去遍历,时间复杂度O(N^2)。 阅读全文
摘要:
计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 阅读全文
摘要:
一般来说,最好情况和最坏情况的时间复杂性是很难计量的 —— 原因是对于问题的任意确定的规模N达到了Tmax(N)的合法输入难以确定,而规模N的每一个输入的概率也难以预测或确定。我们有时也按平均情况计量时间复杂性,但那是在对P(I)做了一些人为的假设(比如等概率)之后才进行的。所做的假设是否符合实际总 阅读全文