#include<stdio.h>
#include<iostream>
using namespace std;
const int size=100000;
void qs(int *arr,int left,int right)
{
if (left>=right) return ;
int compare=arr[left],i=left,j=right;
while (i<j)
{
while (i<j&&arr[j]>compare) j--;
arr[i]=arr[j];
while (i<j&&arr[i]<=compare) i++;
arr[j]=arr[i];
}
arr[i]=compare;
qs(arr,left,i-1);
qs(arr,i+1,right);
}
void merge(int *arr,int *brr,int left,int mid,int right)
{
int i=left,j=mid+1,k=left;
while (i<=mid&&j<=right)
arr[i]<arr[j]? (brr[k++]=arr[i++]):(brr[k++]=arr[j++]);
while (i<=mid) brr[k++]=arr[i++];
while (j<=right) brr[k++]=arr[j++];
for (i=left;i<=right;i++) arr[i]=brr[i];
}
void msort(int *arr,int *brr,int left,int right)
{
if (left>=right) return ;
int mid=(left+right)>>1;
msort(arr,brr,left,mid);
msort(arr,brr,mid+1,right);
merge(arr,brr,left,mid,right);
}
int main()
{
int i,n;
int arr[size],brr[size];
while (scanf("%d",&n)!=EOF)
{
for (i=0;i<n;i++) scanf("%d",arr+i);
msort(arr,brr,0,n-1);
for (i=0;i<n;i++) printf("%d ",arr[i]);
puts("");
}
return 0;
}
快速排序&归并排序
最新推荐文章于 2024-03-05 17:18:17 发布