归并排序

#include<iostream>
using namespace std;
void bg(int arr[], int brr[], int begin, int b, int end){
  int i=begin;
  int j=b+1;
  int k=begin;
  while (i<=b && j<=end){
    if (arr[i]<arr[j])
      brr[k++]=arr[i++];
    else
      brr[k++]=arr[j++];
  }
  if (i<=b)
    while (i<=b){
      brr[k++]=arr[i++];
  }
  else 
    while (j<=end){
       brr[k++]=arr[j++];
  } 
  for (int i=begin; i<=end; i++)
    arr[i]=brr[i];
}
void bgsort(int arr[], int brr[], int begin, int end){
  if (begin < end){
    int p=(begin+end)/2;
    bgsort(arr, brr, begin, p);
    bgsort(arr, brr, p+1, end);
    bg(arr, brr, begin, p, end);
  } 
}
int amin() {
  int arr[100], brr[100];
  int n;
  cin>>n;
  for (int i=0; i<n; i++) {
    cin>>arr[i];
  }
  bgsort(arr, brr, 0, n);
  for (int i=0; i<n; i++){
    cout<<arr[i]<<" ";
  }
}

  

原文地址:https://www.cnblogs.com/a863886199/p/6628542.html