#include<iostream>
const int N = 100010;
using namespace std;
int q[N],temp[N];
void merge_sort(int *q,int l,int r){
if(l>=r) return;
int mid = (l+r)/2;
merge_sort(q,l,mid);
merge_sort(q,mid+1,r);
int k = 0,i = l,j = mid+1;
while(i<=mid&&j<=r){
if(q[i]<q[j]) temp[k++] = q[i++];
else temp[k++] = q[j++];
while(i<=mid) temp[k++] = q[i++];
while(j<=r) temp[k++] = q[j++];
}
for(int i = 0,j = l;i<=r;j++,i++) q[i] = temp[j];
}
int main(){
int n;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d",&q[i]);
}
merge_sort(q,0,n-1);
for(int i = 0;i<n;i++){
printf("%d ",q[i]);
}
}
归并排序算法
最新推荐文章于 2024-10-05 22:19:52 发布
本文详细介绍了使用C++编写的归并排序算法,通过递归方式对整数数组进行排序,并展示了完整的主函数实现过程。
摘要由CSDN通过智能技术生成