算法导论
文章平均质量分 73
木妖喵
这个作者很懒,什么都没留下…
展开
-
2.1 插入排序
插入排序: 对于插入排序法很形象的描述就是,打牌的你手上握着一手无序的牌,现在你需要将它们按顺序排好。 于是,你从第二张牌开始,对比和之前的牌的大小并选择正确的位置插入。 第二张牌插完了,就拿第三张牌和前面两张牌比较,然后插入合适的位置。 如此到最后一张牌结束。 下面用代码简单实现一下。 Array insertion (Array arr){ for(int原创 2015-07-25 16:54:46 · 402 阅读 · 0 评论 -
2.2 分析算法
知识 算法的运行时间依赖于输入规模以及每行语句的执行代价。 执行代价被常量化,现在只考虑输入规模增加带来的增长量级,取影响最大的一项作为算法的执行时间。 分析一个算法的运行时间: 假设每一行代码的执行代价 算出每一行代码的执行次数 每一行代码的执行次数*代价的总和就是运行时间 取最差情况下的运行时间作为算法的预测运行时间 习题 2原创 2015-07-30 14:39:09 · 1004 阅读 · 0 评论 -
2.3 设计算法
知识 分治模式 分解:原问题分为若干子问题,这些子问题都是原问题的规模较小的实例。解决:递归求解各子问题。当子问题规模足够小则直接求解。合并:合并这些子问题的解成原问题的解。 归并排序 分解:分解带排序的n个元素的序列为两个n/2的子序列。解决:使用归并排序递归地排序两个子序列。合并:合并两个已排序的子序列产生已排序的答案。 当排序序列长度为1时,递归开始回升。 下面是用R原创 2015-08-04 11:00:15 · 600 阅读 · 0 评论 -
2. 算法基础总题
2-1 (在归并排序中对小数组使用插入排序)虽然归并排序的最坏情况运行时间为Θ(nlgn),而插入排序的最坏情况是Θ(n²),但是插入排序中的常量因子可能使得它在n较小时,在许多机器上实际运行的更快。因此,在归并排序中当子问题变的足够小时,采用插入排序来使递归的叶变粗是有意义的。考虑对归并排序的一种修改,其中使用插入排序来排序长度为k的n/k个子表,然后使用标准的合并机制来合并这些子表,这里k是一原创 2015-08-06 16:51:34 · 624 阅读 · 0 评论