C++合并排序算法

来源:互联网 发布:免费的美发软件 编辑:程序博客网 时间:2024/06/01 17:24
#include<iostream>using namespace std;int Merge(int Sumarray[],int Larray[],int Llength,int Rarray[],int Rlength){int i=0,j=0,k=0;while ((i<Llength+1)&&(j<Rlength+1)){if (Larray[i]<=Rarray[j]){Sumarray[k]=Larray[i];i++;}else{Sumarray[k]=Rarray[j];j++;}k++;}if (i==Llength+1){while (j<Rlength+1){Sumarray[k]=Rarray[j];j++;k++;}}else{while (i<Llength+1){Sumarray[k]=Larray[i];i++;k++;}}return 0;}int Mergesort(int Inputarray[],int nLow,int nHigh){if ((nHigh-nLow+1)>1){int nMid = (nLow+nHigh+1)/2;int* nLeft = new int[nMid];int* nRight = new int[nHigh - nMid + 1];for (int i = 0; i < nMid; i++){nLeft[i] = Inputarray[i];}for (int j = 0 ; j < (nHigh-nMid+1); j++){nRight[j] = Inputarray[j+nMid];}Mergesort(nLeft,nLow,nMid-1);Mergesort(nRight,nLow,nHigh-nMid);Merge(Inputarray,nLeft,nMid-1,nRight,nHigh-nMid);delete [] nRight;delete [] nLeft;return 0;}}int main(){int array[10] = {15,7,3,19,4,63,2,99,18,1};  Mergesort(array, 0, 9);  for(int i = 0; i < 10; i++)      {          cout << array[i] << "  ";      }      cout<<endl;      return 0;  }