![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《算法导论》的实现
电子科学
有一颗不当码农的心
展开
-
《算法导论》的堆排序
#include #include void BUILD_MAX_HEAP(int A[],int length) { int heapsize; int i; heapsize = length; for(i = (int)(heapsize/2);i>=0;i--) MAX_HEAPIFY(A,i,heapsize); } void MAX_HEAPIFY(int A[],in原创 2015-07-28 21:12:34 · 422 阅读 · 0 评论 -
《算法导论》中求最大子数组的C++实现
#include #include using namespace std; #define Minium -10000 typedef struct Node{ //return type int low; int high; int sum; }Node; //分治方法求最大子数组 //p为起点 r为终点,mid为中点 Node Find_Max_Subarry(vector原创 2015-08-24 12:54:01 · 994 阅读 · 1 评论 -
<算法导论》第四章的求最大子数组的C语言实现
#include #include int *FindMaxCrossSubarray(int A[],int low,int mid,int high) { int lsum = -10000; int rsum = -10000; int sum = 0; int i; int *res; res = (int *)malloc(sizeof(int)*3); for(i =原创 2015-07-19 20:03:43 · 1266 阅读 · 0 评论 -
《算法导论》中的计数排序的C++实现
#include #include using namespace std; void CountSort(vector A, vector &B, int k,int n) { int i,j; vector C(k+1, 0); for (i = 0; i < n; i++) C[A[i]] = C[A[i]] + 1; for (j = 1; j <= k; j++) C原创 2015-08-25 16:16:06 · 471 阅读 · 0 评论 -
《算法导论》中的快速排序
期望时间复杂度为O(nlgn) #include #include using namespace std; int Partition(vector &A, int p, int r) { int i,j; int key,temp; i = p - 1; key = A[r]; //The key set A[r] value for (j = p; j <= r; j++)原创 2015-08-25 14:28:07 · 471 阅读 · 0 评论 -
《算法导论》中的查找任意顺序值的C++实现
//时间复杂度最坏为theta(n^2) 期望运行时间为O(n)#include #include #include #include using namespace std; //快速排序算法 int Partition(vector &A, int p, int r) { int i, j; int key, temp; i = p - 1; key = A[r]; //The原创 2015-08-26 15:40:06 · 502 阅读 · 0 评论 -
《算法导论》的基数排序 C++实现
#include #include using namespace std; typedef struct Node{ int data; //数值 int ge; //位值 int shi; int bai; }Node; void CountSort(vector A, vector &B, int k,int n,int bit) { int i,j; vector原创 2015-08-25 17:56:01 · 1034 阅读 · 0 评论 -
《算法导论》的桶排序C++实现
#include #include #include using namespace std; //输入数组,和个数 template void BucketSort(vector &A, int n) { int i ,j; vector B[7]; //桶容器 for (i = 0; i < n; i++) { int temp = n*A[i]; B[temp].pus原创 2015-08-26 10:57:11 · 447 阅读 · 0 评论 -
动态规划简单例子之硬币数量
如果我们有面值为1元、2元和5元的硬币若干枚,如何用最少的硬币凑够n元? 这是典型的动态规划的问题,我们可以把问题分解为若干之问题,设pi为凑够i元所需的最少硬币的个数。那么当i > 5时有递推方程 pi = min(pi-1,pi-2,pi-5)+1。由此递推方程就可以得出程序如下:#include using namespace std; int Min(int a,int b,int原创 2015-11-08 11:26:07 · 550 阅读 · 0 评论