摘要:
在某些应用中,在开始的时候无法预知表中需要存储多少对象。 需要根据对象的多少调整所需要的存储空间插入算法 — —如果满了就分配一个二倍大小的新空间 —一次插入操作的代价 —简单分析:最坏情况每次都要扩张动态表,需要O(n)的复杂度 —聚集法:只有在表内元素数为2的幂次的时,表才会扩张,在这些情况下一次的代价才是O(n)的 —求和是,单领出2的幂次的项,这些项的个数不是线性的,而是logn项的 —聚集法需要发现操作中突然变大的个别操作 —记账法:插入付费3块钱,1块钱给最后插入的对象(扩张时复制当前元素的代价),1块钱用于给一个已经没... 阅读全文
posted @ 2013-06-13 21:04
siyudemo
阅读(362)
评论(0)
推荐(0)
摘要:
两个已排好顺序的序列A,B 长度为m,n,寻找第k大的数 —第一次取出a[k/2], b[k/2]两个数比较 —如果两个数相邻,那么找到了 较大的数的前一个是比较小的数小,较小的数的后一个比较大的数大 —如果两个数不相邻,那么 k/4地找寻找最大值和最小值:比较次数 3n/2-2 —先两两进行比较,得到胜者组和败者组:n/2 —分别在组内找到最大值和最小值:2* (n/2 - 1)寻找最大值和次大值:比较次数n+logn —先找到最大值,利用胜者树:T(n) = T(n/2) + n/2 = n-1 —先两两比较:n/2 —递归下去:T(n/... 阅读全文
posted @ 2013-06-13 18:38
siyudemo
阅读(189)
评论(0)
推荐(0)
摘要:
算法正确性——循环不变式算法复杂度的计算方法一 代换法 —局部代换 这里直接对n变量进行代换 —替换成对数或者指数的情形 n = 2^m —整体代换 这里直接对递推项进行代换 —替换成内部递推下标的形式 T(2^n) = S(n)方法二 递归树法 —用实例说明 —分析每一层的内容 —除了递归项的内容拿出来,如第一种树把T(n-kn)作为下一层进行计算 —递归项按层写出方法三 主定理 —f(n)必须是n的多项式规模的才能使用主定理 — —f(n)比较小,那么前面a,b确定的复杂度做主导 —f(n)和a,b持平,那... 阅读全文
posted @ 2013-06-13 09:36
siyudemo
阅读(445)
评论(0)
推荐(0)
浙公网安备 33010602011771号