对第二章分治法的总结

  1. 分治法是将较大规模的问题划分为较小规模的问题提高解决问题的效率。
  2. 二分法是分治法的一个特殊方法,通常和递归算法结合使用。
  3. 个人认为这个算法提供给我们一个新的解决问题的思路。
  4. 使用二分法的关键在于找到分解为子问题的方式,分解方式不同也会影响算法的效率,比如说二分排序中有合并排序和快速排序两种。虽然这两种排序方法的时间复杂度都是nlog(n),但是对于不同的数据,两者排序的效率还是有一定差别的。对于基本排好序的数据集来说,快速排序会比较高效一些。

原文地址:https://www.cnblogs.com/coding-specification-of-Java/p/11638636.html

时间: 2024-07-31 07:57:14

对第二章分治法的总结的相关文章

算法导论第2章 分治法与归并排序, 二分查找法

分治策略:将原问题划分成n个规模较小而结构与原问题相似的子问题,然后递归地解决这些子问题,最后再合并其结果,就可以得到原问题的解. 它需要三个步骤: 分解:将原问题分解成一系列的子问题. 解决:递归地解决各个子问题.若子问题足够小,则直接求解. 合并:将子问题的结果合并成原问题的解. 通过分治策略和分治步骤,可以简单地默出归并算法. 分解:将n个元素分成各自包含n/2个元素的子序列 解决:用归并排序法递归地对两个子序列进行排序. 合并:合并两个以排序的子序列,得到排序结果: void merge

分治法(二)

参考  <算法设计与分析> 第四章 分治法     Anany Levitin著  翻译版   清华大学出版社 在上一篇文章中,介绍了分治策略的思想,主定理,以及几个用分治策略的经典案例.这一篇文章将继续探讨分治算法的其他应用,包括大整数乘法和Strassen矩阵乘法,最近点对问题和凸包问题这4个算法,一般来说常规的数据结构教程上不包括这些内容. --------------------------------------------------------------------------

分治法(一)

这篇文章将讨论: 1) 分治策略的思想和理论 2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性. 说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴.由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:1,大整数乘法   2,矩阵乘法的分治策略   3,最近点对  4,凸包问题,请见下一篇. 好了,切入正题. --------------------------------------------

算法导论_第二章(1)

年前的时候去逛书店,久仰算法导论这本书的大名看见后也就买了下来.回家看了一段时间,发现看书的进度真的是极慢,书里的课后题很多,那些不会的问题也是通过网上搜别人的答案才得以解决的.所以,我就想把我看这本书的心得连带课后的解答分享给大家.同时也是给我坚持把算法导论这本书看完的一个动力 ^_^ 因为本书的第一章相当于一个导论就直接跳过了,那么,从第二章开始! 第二章主要介绍了插入排序和归并排序: 所谓的插入排序就像是一局扑克刚开始时的摸牌阶段,你对手中的扑克所做的整理排序一样.开始时,我们的左手为空并

C语言实现快速排序法(分治法)

title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true --- 算法原理 分治法的基本思想:将原问题分解为若干个更小的与原问题相似的问题,然后递归解决各个子问题,最后再将各个子问题的解组合成原问题的解. 利用分治法可以将解决办法分为 "三步走" 战略: (1) 在数据集中选定一个元素作为"基准"(pivot) (2) 将所有数据集小于基准的元素放在基准左边

算法设计第二章总结

第二章是递归和分治策略,通过Hanoi塔问题.排列问题等学习递归的思想,通过二分搜索算法.大整数乘法等学习了分治法的思想,并学习了归并排序和快速排序两种排序方法.PTA上的问题一是找第k小的数,用到了快速排序的方法对数组进行排序,同时在寻找第k小的数时递归调用int find(int a[],int left,int right,int k)函数,从而找出k.写代码过程中遇到的问题是在main函数中left与right赋值出错,导致程序运行程序超时错误及段错误,改正后程序可正常运行.问题二是求逆

算法第二章心得

学了算法的第二章以后,我对于算法思想有了进一步的理解.分治法的化繁为简,化难为易的思想,在日常生活中也能很好地体现出来.如果应用得当,往往能起到峰回路转,茅塞顿开的效果. 第二章的PTA实践,第一第二题其实检验了我们对二分搜索的掌握,以及算法的改写能力.第三题我觉得有点难度,因为它给出的序列最大长度非常大(100000),这就不得不要重视算法的时间复杂度.一开始我是在Java上运行,恰恰就是在最大序列长度这里运行超时了,我认为这一现象是Java解释器效率较低导致的.因此我又重新用C++写了一遍.

第二章学习心得

分治法把大问题分解成很多个同类的小问题,是一个很实用的方法,在解决一些问题的时候非常实用. 结合对时间复杂度的考虑来决定是否该使用分治算法,如果时间复杂度太大则规避使用此方法,而不是盲目使用. 然后这次第二章的练习,比如二分搜索和归并的使用,提高了我对此类算法的熟练程度,在以后的一些排序当中可以适当使用. 对此次结对编程的总结:默契还是不太足够,或许是我理解能力和思维模式稍显逊色吧.以后要多多交流,向队友学习新的思路和解题方法,我也会提出自己的见解加以完善. 原文地址:https://www.c

Machine Learning In Action 第二章学习笔记: kNN算法

本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数字识别 通过“约会对象”功能,基本能够了解到kNN算法的工作原理.“手写数字识别”与“约会对象预测”使用完全一样的算法代码,仅仅是数据集有变化. 约会对象预测 1 约会对象预测功能需求 主人公“张三”喜欢结交新朋友.“系统A”上面注册了很多类似于“张三”的用户,大家都想结交心朋友.“张三”最开始通过自己筛选的