归并排序

Posted rakint

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<vector>
using namespace std;
void mergesort(int Arr[], int l, int r);
void merge(int Arr[], int l, int m, int r);
int main()
{
 
 int arr[10] = { 10,9,4,7,8,5,6,3,2,1 };
 for (int i = 0; i < 10; i++)
  cout << arr[i] << endl;
 mergesort(arr, 0, 9);
 cout << "排序后:" << endl;
 for (int i = 0; i < 10; i++)
  cout << arr[i] << endl;
 return 0;
}
void mergesort(int Arr[], int l, int r)
{
 //int m;
 if (l < r)
 {
  int m = (l + r) / 2;
  mergesort(Arr, l, m);
  mergesort(Arr, m + 1, r);
  merge(Arr, l, m, r);
 }
}
void merge(int Arr[], int l, int m, int r)
{
 int i = l, j = m + 1;
 int mid = m, end = r;
 int k = 0;
 int temp[10];
 while (i <= mid && j <= end)
 {
  if (Arr[i] <=Arr[j])
   temp[k++] = Arr[i++];
  else
   temp[k++] = Arr[j++];
 }
 while (i <= mid)
  temp[k++] = Arr[i++];
 while (j <= end)
  temp[k++] = Arr[j++];
 for (int i = 0; i < k; i++)
  Arr[l + i] = temp[i];//排好序后代替当前的数组
}
















































以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章

常见排序算法之归并排序——归并排序

归并排序

归并排序(递归非递归以及自然归并排序)算法总结

排序算法——归并排序

归并排序(逆序数问题)详解

归并排序及其应用场景