21xrx.com
2025-03-29 22:03:34 Saturday
文章检索 我的文章 写文章
C++ 归并排序代码
2023-07-05 06:32:39 深夜i     21     0
C++ 归并排序 代码 分治算法 时间复杂度

C++归并排序代码

归并排序是一种基于“分治”思想的排序算法。通过将一个大问题分成若干小问题,对每个小问题分别求解,然后将小问题的解合并成原问题的解来完成排序。

以下是C++归并排序的代码实现:

#include<iostream>
using namespace std;
void Merge(int a[],int l1,int r1,int l2,int r2)
{
  int i=l1,j=l2;//i,j表示两个有序序列的当前元素的位置
  int temp[100],index=0;
  while(i<=r1&&j<=r2)//两个序列合并
  {
    if(a[i]<=a[j])
      temp[index++]=a[i++];
    else
      temp[index++]=a[j++];
  }
  while(i<=r1)//如果第一个序列还有剩余元素
    temp[index++]=a[i++];
  while(j<=r2)//如果第二个序列还有剩余元素
    temp[index++]=a[j++];
  for(int k=0;k<index;k++)//将结果复制到原序列中
    a[l1+k]=temp[k];
}
void MergeSort(int a[],int left,int right)
{
  if(left<right)
  {
    int mid=(left+right)/2;//分治
    MergeSort(a,left,mid);//递归左半部分
    MergeSort(a,mid+1,right);//递归右半部分
    Merge(a,left,mid,mid+1,right);//归并
  }
}
int main()
{
  int a[10]=9;
  MergeSort(a,0,9);
  for(int i=0;i<10;i++)
    cout<<a[i]<<" ";
  return 0;
}

在上面的代码中,Merge()函数用于合并两个有序序列,MergeSort()函数用于递归地进行分治和归并操作。最后,在main()函数中,我们初始化一个整型数组,并使用MergeSort()进行排序,最终输出排好序的结果。

因此,C++归并排序代码就这样实现了!这是一种高效、稳定、并且易于实现的排序算法,很多程序员喜欢使用归并排序算法来对数据进行排序。

  
  

评论区

请求出错了