算法
文章平均质量分 75
码农小兴
这个作者很懒,什么都没留下…
展开
-
归并排序的Python实现
基本思路将待排序的数组分成两半,对每一半进行(归并)排序(这里用到递归的思想),最后再把排序好的两半归并。 就同切蛋糕似的,先是一刀切下去变成两半,然后分别对两半进行独立操作,都切一刀,就成了4块蛋糕,再切,成8块,继续切,直至每一块都小得不能再切了(每个数组都只剩两个元素了)。 切简单,归并稍难,仅剩两个元素的数组也很好排序,比较大小,交换位置即可,那么两个仅剩两个元素的数组该如何归并成一个数原创 2015-03-15 14:59:03 · 512 阅读 · 0 评论 -
钢条切割问题
问题描述给定一段长度为n英寸的钢条和一个价格表pip_i(i = 1,2,……,n ) , 求切割钢条方案,使得收益rnr_n最大。分析问题随便给定一个价格表 长度i 1 2 3 4 5 6 7 8 9 10 价格pip_i 1 5 8 9 10 17 17 20 24 30 得出以下结果 钢条长度n 1原创 2015-03-12 23:34:39 · 912 阅读 · 0 评论 -
求解最长公共子序列问题的可视化界面实现
算法思想本程序采用算法导论224-225页(不同版本所在书页可能不一样)的自底向上的动态规划算法。 算法思想为将一个问题(求解两个序列的最长公共子序列)分解为多个子问题(求解两个序列的最长公共子序列的最长公共子序列),再将子问题分解为子问题的子问题,直至无法分解。 由于该问题具有重叠子问题性质,可以采用带备忘录的递归算法也可以采用自底向下的动态规划算法。本程序采用后者。核心程序private s原创 2015-03-12 18:39:16 · 1258 阅读 · 1 评论 -
简洁的排序算法实现
插入排序 Insert Sorttemplate <class Elem,class Comp> void inssort(Elem A[],int n){ for (int i = 1; i < n; i++) for (int j = i; (j > 0)&&(Comp::lt(A[j],A[j-1])); j--) swap(A,j,j-1); } 冒泡排序 Bub原创 2015-09-24 17:22:23 · 380 阅读 · 0 评论 -
与众不同的二叉树遍历实现
中序遍历思路为节省保存父节点的开支(压栈),令叶节点原本指向NULL的指针指向父节点。步骤 令当前指针(curr)指向根节点 判断当前结点(当前指针所指结点)是否为空,非空则下一步,空则停止 用temp指针指向当前结点的左子结点,并判断其是否为空,空则进入下一步,非空则进入第5步 对当前结点进行操作(比如打印)并使当前指针指向当前结点的右子节点,返回第2步 判断temp结点(temp指针所指结点)的原创 2015-10-21 22:28:17 · 360 阅读 · 0 评论