计数排序是一种线性时间的排序,同时也是一种非比较排序 代码如下: 排序例图如下: 计数排序需要用到三个数组 : 代码中 数组data[A]是待排序数组,aimArray[B]是中间数组, tempArray[C]是保存数组元素相对位置的数组 5-6行,将tempArray数组清零 7-10行, 将原 ...
分类:
编程语言 时间:
2016-10-18 01:54:54
阅读次数:
136
以下实现最大子数组的分治策略,算法来自《算法导论》 #include<iostream> using namespace std; struct ans { int low; int high; int sum; }; ans MAXIMUM_CROSSING_SBUARRAY(int * A, i ...
分类:
编程语言 时间:
2016-10-11 19:03:02
阅读次数:
319
以下实现归并排序,第一部分含有哨兵(算法来自《算法导论》),第二部分不含哨兵 第一部分,含有哨兵的归并排序: #include<iostream> using namespace std; void myMERGE(int * A, int p, int q, int r) { int n1 = q ...
分类:
编程语言 时间:
2016-10-11 18:33:42
阅读次数:
178
以下用C++实现插入排序的升序和降序排序 算法来自《算法导论》 #include<iostream> using namespace std; void INSERTION_SORT(int *A, int N) { for(int j = 1; j < N; ++j) { int key = A[ ...
分类:
编程语言 时间:
2016-10-11 18:27:01
阅读次数:
104
前面算法在生活中不谈,算法的重要性不谈,直接说算法。 第2章 算法基础 2.1 插入排序 书中主要介绍了插入排序的思想,即对于数组A[0 ~ N - 1],长度为N。那么,升序的插入排序的过程即是从A[1]开始,先和A[0]比较,如果比A[0]小,那么将A[0]的元素顺序后移放置在A[1]中,将原本 ...
分类:
编程语言 时间:
2016-10-07 01:17:05
阅读次数:
139
恢复内容开始 插入排序 经典显示(参照算法导论) 一副扑克牌放在桌面上 花色朝下,每次从桌面上拿去最上面的一张 ,放入自己手中的牌中的正确位置,(每次都是对手中的牌排序,并且每次拿去桌面上的牌时,手中的牌已经排序好,当桌上的牌没有时,所有的排序都已经排序好. 其中注意点:将后面一张牌与前一张比如果小 ...
分类:
编程语言 时间:
2016-10-05 17:48:40
阅读次数:
197
A * B Problem Plus 题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1402 FFT(模板题) (FFT的详细证明参见算法导论第三十章) 一个多项式有两种表达方式: 1.系数表示法,系数表示的多项式相乘,时间复杂度为O(n^ ...
分类:
其他好文 时间:
2016-09-30 07:45:38
阅读次数:
159
钢条切割问题求解方法及相关思考 题目来源于《算法导论》第15章第一节。问题如下: 给定一个长度为n英寸的钢条和一个价格表pi(i=1,2,3,...n),求能够使销售收益rn最大的切割方案。 问题1:一共有多少种切割方式? 思路一:对于一个长度为n英寸的钢条,其中一共有n-1个节点可供切割,在每一个 ...
分类:
其他好文 时间:
2016-09-28 19:30:41
阅读次数:
185