归并排序

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 13:56   11   0

#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;

const int N=204800;

void merge(int a[],int left,int mid,int right)
{
int n1=mid-left+1;
int n2=right-mid+1;
int s1[n1+1],s2[n2];
for(int i=0;i<n1;i++){
s1[i]=a[left+i];
}
s1[n1]=N;
for(int i=0;i<n2-1;i++){
s2[i]=a[mid+i+1];
}
s2[n2-1]=N;
int i=0,j=0;
for(int k=left;k<=right;k++){
if(s1[i]>s2[j]){
a[k]=s2[j++];
}else{
a[k]=s1[i++];
}
}
}

void mergesort(int a[],int left,int right)
{
int mid=(left+right)/2;
if(left<right){
mergesort(a,left,mid);
mergesort(a,mid+1,right);
merge(a,left,mid,right);
}
}
int main()
{
int n;
int str[1000]={0};
cin>>n;
for(int i=0;i<n;i++){
cin>>str[i];
}
mergesort(str,0,n-1);
for(int i=0;i<n;i++){
cout<<str[i];
}
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP