2016年3月15日

桶式排序

摘要: //桶式排序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]) { ... 阅读全文

posted @ 2016-03-15 19:44 小二杰 阅读(103) 评论(0) 推荐(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 =... 阅读全文

posted @ 2016-03-15 19:43 小二杰 阅读(124) 评论(0) 推荐(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 Ce... 阅读全文

posted @ 2016-03-15 19:43 小二杰 阅读(137) 评论(0) 推荐(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 = la... 阅读全文

posted @ 2016-03-15 19:41 小二杰 阅读(191) 评论(0) 推荐(0) 编辑

堆排序nlogn

摘要: //由于数组是从0开始的,因此儿子节点的索引要多加一个 #define LeftChild(i) (2*(i)+1) void PercDown(int A[], int i, int N) //下滤,将堆顶的元素下滤到适当位置{ int Child; int Temp; for(... 阅读全文

posted @ 2016-03-15 19:38 小二杰 阅读(205) 评论(0) 推荐(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 =... 阅读全文

posted @ 2016-03-15 19:37 小二杰 阅读(156) 评论(0) 推荐(0) 编辑

对分查找-logN

摘要: 给定一个整数X和整数A0,A1...An-1, 后者已经预先排序并且在内存中,求Ai = X的下标i,如果不存在,返回-1. #includeusing namespace std;int BinarySearch(int A[],int n, int x){ int Low = 0; int... 阅读全文

posted @ 2016-03-15 19:36 小二杰 阅读(310) 评论(0) 推荐(0) 编辑

求最大公因子-欧几里德算法

摘要: #includeusing namespace std;unsigned int Gcd(unsigned int M, unsigned int N){ unsigned int Rem; while(N > 0) { Rem = M%N; M = N; N = Rem; } retur... 阅读全文

posted @ 2016-03-15 19:36 小二杰 阅读(246) 评论(0) 推荐(0) 编辑

最大子序列-NlogN

摘要: //分治#includeusing namespace std;int MaxSubSum(int A[], int Left, int Right){ int MaxLeftSum, MaxRightSum; int MaxLeftBorderSum, MaxRightBorderSum; ... 阅读全文

posted @ 2016-03-15 19:34 小二杰 阅读(105) 评论(0) 推荐(0) 编辑

最大子序列-N

摘要: #includeusing namespace std;int MaxSubSum(int A[], int N){ int ThisSum = 0; int MaxSum = 0; for(int i = 0; i MaxSum) MaxSum = ThisSum; else if(Th... 阅读全文

posted @ 2016-03-15 19:32 小二杰 阅读(95) 评论(0) 推荐(0) 编辑

导航