二分查找利用分治法,逐渐苏小查找范围,适用于有序数组。时间复杂度是O(log2N).PS:二分查找算法的判定过程实际上可以借助一棵平衡二叉树来描述,中间位置的关键字可以看成二叉树的根节点。C++代码如下: 1 #include 2 using namespace std; 3 template .....
分类:
编程语言 时间:
2015-05-20 00:24:06
阅读次数:
130
在参加中级软件设计师的考试中,公认的最难的一部分就是算法。可是自从老师给我们讲完算法之后,就感觉算法其实也没什么。软考中,算法被分为分治法、动态规划法、贪心算法和回溯法。那么,今天我们就来说一说这几种算法。
综上,我们知道了每一种算法都有其适用的情况,我们要根据实际情况来选择适当的算法。当然,我个人认为,所有的算法都是从贪心出发,以分而治之的方法解决。对于算法更深层次的理解,还需要我们在今后实际使用的过程中慢慢体会。...
分类:
编程语言 时间:
2015-05-19 08:55:17
阅读次数:
307
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,...
分类:
编程语言 时间:
2015-05-14 16:22:10
阅读次数:
120
求一个集合的幂集就是求一个集合的所有的子集,方法有穷举法,分治法,回溯等,这里使用回溯法。 回溯法是设计递归过程的一种重要的方法,它的求解过实质上是一个先序遍历一棵“状态树”的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中的。 幂集中的每个元素是一个集合,它或是空集,或含集合A中一个元素...
分类:
其他好文 时间:
2015-05-14 00:41:43
阅读次数:
582
一. 基本思想 分治法的基本思想是,将一个难以直接解决的大问题,分割成一些规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。(分-治-合)二. 适用条件 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地....
分类:
其他好文 时间:
2015-05-13 21:42:57
阅读次数:
211
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子...
分类:
编程语言 时间:
2015-05-13 19:36:34
阅读次数:
150
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法描述归并操作的过程如下:申请空间,使其...
分类:
编程语言 时间:
2015-05-13 18:39:52
阅读次数:
144
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后...
分类:
编程语言 时间:
2015-05-13 18:38:42
阅读次数:
135
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个...
分类:
编程语言 时间:
2015-05-12 22:46:26
阅读次数:
131
微软快速排序-快速搞定算法腾讯面试快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采 用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考 试如软考,考研中也常常出现快速排序的...
分类:
编程语言 时间:
2015-05-12 20:57:55
阅读次数:
159