2.3.1-分治法-归并排序
来源:互联网 发布:淘宝屏蔽粉丝数 编辑:程序博客网 时间:2024/06/05 15:16
、
#include <iostream> #include <cstring>#include <cstdio>#include <algorithm>#include <string>#include <string.h>#include <cmath>#include <sstream>#include <set>#include <map>#include <functional>#include <queue>#include <vector>using namespace std;const int maxn = 1e9;int A[20] = { 0,0,0,0,0,0,0,0,0,5,2,4,7,1,3,2,6};int L[20], R[20];void MergeSort(int p,int q,int r){ int i, j, k; int n1 = q - p+1; int n2 = r - q; for (i = 1; i <= n1; i++) L[i] = A[p + i - 1]; for (i = 1; i <= n2; i++) R[i] = A[q + i]; L[n1 + 1] = maxn; R[n2 + 1] = maxn; i = j = 1; for (k = p; k <= r; k++) { if (L[i] <= R[j]) { A[k] = L[i]; i++; } else { A[k] = R[j]; j++; } }}void Merge(int p, int r){ if (p < r) { int q = (p + r) / 2; Merge(p, q); //排序左半部分 Merge(q+1, r); //排序右半部分 MergeSort(p, q, r); }}int main(){ Merge(9,16); for (int i = 9; i <= 16; i++) cout << A[i] << " "; system("pause");}
练习2.3-2 另外一种不采用哨兵的MergeSort #include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <string>#include <string.h>#include <cmath>#include <sstream>#include <set>#include <map>#include <functional>#include <queue>#include <vector>using namespace std;const int maxn = 1e9;int A[11] = {9,8,7,6,5,4,3,2,1,0 ,-1};int L[20], R[20];void MergeSort(int p,int q,int r){ int i,j,k,n1,n2; n1=q-p+1; n2=r-q; // cout<<n1<<" "<<n2<<endl; for(i=0;i<n1;i++) L[i]=A[p+i]; for(i=0;i<n2;i++) R[i]=A[q+i+1]; for(i=0,j=0,k=p;k<=r;k++) { if(i==n1) A[k]=R[j++]; else if(j==n2) A[k]=L[i++]; else if(L[i]<=R[j]) A[k]=L[i++]; else A[k]=R[j++]; }}void Merge(int p,int r){ if(p<r) { //cout<<p<<" "<<" "<<r<<endl; int mid=(p+r)/2; Merge(p,mid); Merge(mid+1,r); MergeSort(p,mid,r); }}int main(){ Merge(0,9); for(int i=0;i<10;i++) cout<<A[i]<<" "; cout<<endl;}
阅读全文
0 0
- 2.3.1-分治法-归并排序
- 分治法,归并排序
- 分治法-归并排序
- 分治法-归并排序
- 归并排序-分治法
- 分治法 - 归并排序
- 分治法--归并排序
- 归并排序 分治法
- 归并排序--分治法
- 分治法 & 归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治-归并排序1
- 分治法之归并排序1
- 分治法实现归并排序
- 分治法(归并排序)
- 分治法与归并排序
- Aggressive cows(最大化最小值问题)
- java编程思想笔记-并发之CountDownLatch
- java回调
- 51nod 1240 莫比乌斯函数
- P2094 运输
- 2.3.1-分治法-归并排序
- 一个简单的防火墙(iptables)实例
- 对volatile关键字的理解
- Your project contains C++ files but it is not using a supported native build system
- 枚举——完美立方和
- Java优先级
- 在Linux上使用PGP签名验证文件完整性
- ion-input在ionic中的input,带label的带icon的输入框
- 递归——苹果数