归并排序
Posted sjyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。
参考算法导论
#include <iostream> using namespace std; void merge(int a[],int p,int q,int r) {int n1=q-p+1; int n2=r-q; int L[n1+1]={0},R[n2+1]={0}; int i,j,k=0; for(i=0;i<n1;i++) { L[i]=a[p+i-1]; } for(j=0;j<n2;j++) { R[j]=a[q+j]; } i=0,j=0; L[n1]=INT_MAX; R[n2]=INT_MAX; for(k=p-1;k<r;k++) { if(L[i]<=R[j]) { a[k]=L[i]; i=i+1; } else { a[k]=R[j]; j=j+1; } } } void mergesort(int a[],int p,int r) { int q; if(p<r) { q=(p+r)/2; mergesort(a,p,q); mergesort(a,q+1,r); merge(a,p,q,r); } } int main() { int a[10]={8,7,6,5,4,3,2,1,9,10}; mergesort(a,1,10); for(int i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; }
以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章