快速排序是目前平均性能最好的排序方式,被作为数组排序首选。 基本思想:将一个数组分为左右两部分以q为界,左部分小于q,右部分大于q;接下来分治策略,将左右两部分继续按照这个规则划分,直至不能划分,该数组便排序完毕。 关键:如何划分左右部分?q该取哪个值?(恕我愚钝,算法导论上的做法没看懂,于是逼着自 ...
分类:
编程语言 时间:
2017-08-25 01:05:37
阅读次数:
164
J48原理:本来名称为C4.8,由于是Java实现的算法,再加上C4.8为商业收费算法。 其实J48是自上而下的,递归的分治策略,选择某个属性放置在根节点,为每个可能的属性值产生一个分支,将实例分成多个子集,每个子集对应一个根节点的分支,然后在每个分支上递归地重复这个过程。当所有实例有相同的分类时, ...
分类:
编程语言 时间:
2017-07-25 18:10:33
阅读次数:
298
採用分治策略找出第K小的元素!要求程序的时间复杂度为线性函数。 #include<iostream> #include<iterator> #include<algorithm> #include<time.h> #include<vector> using namespace std; /* *选 ...
分类:
其他好文 时间:
2017-06-23 10:39:54
阅读次数:
189
2017校招即将来临,我们为大家整理了2017校招的常考算法类型,以及对应的典型题目。 另附参考答案地址:http://www.jiuzhang.com/solution/ 数学 尾部的零 斐波纳契数列 x的平方根 x的平方根 2 大整数乘法 骰子求和 最多有多少个点在一条直线上 超级丑数 比特位操 ...
分类:
编程语言 时间:
2017-06-10 10:36:34
阅读次数:
221
题目来源:http://bailian.openjudge.cn/practice/2980/描述求两个不超过200位的非负整数的积。输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样 ...
分类:
其他好文 时间:
2017-05-21 00:26:46
阅读次数:
193
分解:将原问题划分成形式相同的子问题,规模可以不等,对半或2/3对1/3的划分。 解决:对于子问题的解决,很明显,采用的是递归求解的方式,如果子问题足够小了,就停止递归,直接求解。 合并:将子问题的解合并成原问题的解。 这里引出了一个如何求解子问题的问题,显然是采用递归调用栈的方式。因此,递归式与分 ...
分类:
其他好文 时间:
2017-05-14 13:54:42
阅读次数:
228
问题描述: Gray码是一个长度为2n的序列。序列中无相同的原图,每个元素都是长度为n位的串,相邻元素恰好只有一位不同。用分治策略设计一个算法对任意的n构造相应的Gray码。 算法设计: n=1时,Gray码:0,1 n=2时,Gray码:00,10, 11,01 n=3时,Gray码:000,01 ...
分类:
编程语言 时间:
2017-04-21 22:49:40
阅读次数:
867
1. 快速排序算法简介 快速排序方法是对冒泡排序的一种改进,基本思想是将待排序序列分成两部分,使其中一部分的记录都比另一部分的小,随后分别对这两部分再进行重复划分,最终使得整个序列有序。 该方法的基本思想是:(分治策略) 设置low,high两个指针,分别指向序列的第一个记录和最后一个记录。此时lo ...
分类:
编程语言 时间:
2017-04-15 12:26:58
阅读次数:
257
【题目】 设计一个满足以下要求的比赛日程表:(1) 每个选手必须与其他n-1个选手各赛一次;(2) 每个选手一天只能赛一次;(3) 循环赛一共进行n-1天。 传统方法:将比赛日程表设计为:n行 n-1列的表(i,j)表示:第i个选手在第j 天 遇到的选手 【算法解析】 按分治策略,将所有的选手分为两 ...
分类:
其他好文 时间:
2017-04-06 10:09:09
阅读次数:
162
【问题】若X和Y都是n位二进制整数,设计一个有效的算法,可以进行两个n位大整数的乘法运算。 【算法讲解】 【时间复杂度】 ...
分类:
编程语言 时间:
2017-04-04 01:05:32
阅读次数:
281