
算法
jovetickop
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最大子序列-N
#include using namespace std; int MaxSubSum(int A[], int N) { int ThisSum = 0; int MaxSum = 0; for(int i = 0; i< N; ++i) { ThisSum += A[i]; if(ThisSum > MaxSum) MaxSum = ThisSum; else if(原创 2016-03-15 19:32:45 · 234 阅读 · 0 评论 -
桶式排序
//桶式排序 void BucketSort(int a[],int n, int b[], int max) { for(int i = 0; i <n; ++i ) b[a[i]]++; for(int i = 0, j = 0; i < max; ++i) { if(b[i]) { a[j++] = i; } } } int main() { int A[]原创 2016-03-15 19:44:26 · 258 阅读 · 0 评论 -
优化的快速排序
//快速排序 void Swap(int &a, int &b) { //a ^= b; //b ^= a; //a ^= b; int temp; temp = a; a= b; b = temp; } int Median3(int a[], int Left, int Right) { int Center = (Left+Right)/2; //将左中右三个值排序 if原创 2016-03-15 19:43:50 · 200 阅读 · 0 评论 -
快速排序
//快速排序 void QSort(int a[], int Low, int High) { if(Low > High) return; int Left = Low; int Right = High; int x = a[Low]; //以最左边一个作为枢纽元 while(Left < Right) { //从右向左找到第一个小于枢纽元的值,放到此时的left上原创 2016-03-15 19:43:20 · 218 阅读 · 0 评论 -
归并排序-nlogn
//归并排序 void mergeArray(int a[], int first, int mid, int last, int temp[]) //对两个有序数列合并 { int i = first; int j = mid + 1; int m = mid; int n = last; int k = 0; //每次把两个数列中较小的值存在temp中 while(转载 2016-03-15 19:41:07 · 490 阅读 · 0 评论 -
堆排序nlogn
#define LeftChild(i) (2*(i)+1) //由于数组是从0开始的,因此儿子节点的索引要多加一个 void PercDown(int A[], int i, int N) //下滤,将堆顶的元素下滤到适当位置 { int Child; int Temp; for(Temp = A[i]; LeftChild(i) < N; i = Child) { Chi原创 2016-03-15 19:38:29 · 304 阅读 · 0 评论 -
希尔排序-nlogn
void sheelSort(int A[], int number) { for(int gap = number/2; gap >=1; gap/=2) // gap从number/2开始,每次排序后gap减半,直到为1 { for(int i = gap; i < number; ++i) //从第gap个点开始此轮排序 { /*取要比较的原创 2016-03-15 19:37:56 · 344 阅读 · 0 评论 -
对分查找-logN
给定一个整数X和整数A0,A1...An-1, 后者已经预先排序并且在内存中,求Ai = X的下标i,如果不存在,返回-1. #include using namespace std; int BinarySearch(int A[],int n, int x) { int Low = 0; int High = n-1; int Mid = 0; while(Low <= High)原创 2016-03-15 19:36:43 · 369 阅读 · 0 评论 -
求最大公因子-欧几里德算法
#include using namespace std; unsigned int Gcd(unsigned int M, unsigned int N) { unsigned int Rem; while(N > 0) { Rem = M%N; M = N; N = Rem; } return M; } int main() { cout<<Gcd(1989, 1590原创 2016-03-15 19:36:03 · 625 阅读 · 0 评论 -
最大子序列-NlogN
//分治 #include using namespace std; int MaxSubSum(int A[], int Left, int Right) { int MaxLeftSum, MaxRightSum; int MaxLeftBorderSum, MaxRightBorderSum; int LeftBorderSum, RightBorderSum; int Center原创 2016-03-15 19:34:04 · 299 阅读 · 0 评论 -
编程之美-买书问题
上柜的《哈利波特》平装本系列,一共有五卷。假设每一卷单独销售均需8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下: 本数 2 折扣 5% 本数 3 折扣 10% 本数 4 折扣 20% 本数 5 折扣转载 2016-03-17 21:30:34 · 640 阅读 · 1 评论