归并排序

来源:互联网 发布:java如何合并两个list 编辑:程序博客网 时间:2024/04/27 19:13
#include"aa.h"#include<vector>#include<iostream>#include<numeric>using namespace std;void merge(int a[],int left,int mid,int right){//const int len=sizeof(a);int b[10];int k;for(k=left;k<=right;k++)         //申请新数组b[]将a[]中的值拷贝进去b[k]=a[k];int i=left,j=mid+1;k=left;while(i!=mid+1 && j!=right+1){if(b[i]<=b[j])a[k++]=b[i++];else a[k++]=b[j++];}while(i<=mid)a[k++]=b[i++];while(j<=right)a[k++]=b[j++];}void mergesort(int a[], int left, int right)   //递归调用merge函数{      if (left < right)      {          int mid = (left + right) / 2;          mergesort(a, left, mid);               //左边有序          mergesort(a, mid+1,right);            //右边有序          merge(a, left, mid, right);        //再将二个有序数列合并      }  //if}void MergeSort(int a[], int n)              //封装mergesort函数,用户只需提供待排序数组与长度{       mergesort(a, 0, n - 1);       }  int main(){int a[10]={5,3,10,7,9,2,4,11,8,1};MergeSort(a,10);for(int i=0;i<10;i++)cout<<a[i]<<' ';    cout<<endl;system("pause");return 0;}

0 0
原创粉丝点击