归并排序c++实现
2015-09-14 19:54
701 查看
#include <iostream> using namespace std; /* *归并算法 *将数组a中的下标s~m 和m~e按从小到大的顺序合并 */ void Merge(int *a,int s,int m,int e) { int n1,n2; n1=m-s+1; n2=e-m; int *l=new int[n1+1]; int *h=new int[n2+1]; l[n1]=1<<14; h[n2]=1<<14; int temp=s; for(int i=0;i<n1;i++) { l[i]=a[temp++]; } temp=m+1; for(int i=0;i<n2;i++) { h[i]=a[temp++]; } for(int i=0,j=0,k=s;k<=e;k++) { if(l[i]<=h[j]) { a[k]=l[i++]; } else { a[k]=h[j++]; } } delete[] l; delete[] h; } void MergeSort(int *a,int s,int e) { if(e>s) { int p=(s+e)/2; MergeSort(a,s,p); MergeSort(a,p+1,e); Merge(a,s,p,e); } } int main(int args,char *argv[]) { int a[10]={0,5,16,1,154,4,15,8,45,75}; MergeSort(a,0,9); for(int i=0;i<10;i++) { cout<<a[i]<<" "; } cout<<endl; while(1); }
相关文章推荐
- 黑马程序员-------C语言----指针做函数参数
- C++中不能被声明为虚函数的函数
- C++Primer第五版 5.4.2节练习
- 区分接口继承和实现继承(Effective C++_34)
- C++,C程序设计入门——《高质量程序设计第4章》
- C++Primer第五版 5.4.1节练习
- C++开发中指针易错点
- C++Primer第五版 5.3.2节练习
- 黑马程序员-------C语言----const修饰符
- C++Primer第五版 5.3.1节练习
- A very hard mathematic problem
- 避免遮掩继承而来的名称(Effective C++_33)
- C++Primer第五版 5.2节练习
- C++Primer第五版 5.1节练习
- 24.c++-lib文件简述
- C++一个一个Hwd类库
- C++ Primer学习总结_1_开始
- AVL平衡树的c++实现
- 时间戳转日期的算法(C语言实现)
- C语言中将结构体写入文件