代码:
//归并排序
#include <bits/stdc++.h>
using namespace std;
const int maxn=1000;
int temp[maxn],temp1[maxn];
void Merge(int *a,int s,int m,int e,int *tmp)
{
int pb=0;
int p1=s,p2=m+1;
while(p1<=m&&p2<=e){
if(a[p1]<a[p2])
tmp[pb++]=a[p1++];
else
tmp[pb++]=a[p2++];
}
while(p1<=m)
tmp[pb++]=a[p1++];
while(p2<=e)
tmp[pb++]=a[p2++];
for(int i=0;i<e-s+1;i++)
a[s+i]=tmp[i];
}
void MergeSort(int *a,int s,int e,int *tmp)
{
if(s<e){
int m=s+(e-s)/2;
MergeSort(a,s,m,tmp);
MergeSort(a,m+1,e,tmp);
Merge(a,s,m,e,tmp);
}
}
int main(int argc,char *argv[])
{
// freopen("data.in.txt","r",stdin);
int n;
cout<<"请输入需要排序的数的个数:";
cin>>n;
cout<<endl;
cout<<"请输入需要排序的数:"<<endl;
for(int i=0;i<n;i++)
cin>>temp[i];
MergeSort(temp,0,n-1,temp1);
for(int i=0;i<n;i++)
cout<<temp[i]<<" ";
return 0;
}
//快速排序
#include <bits/stdc++.h>
using namespace std;
const int maxn=10000;
int temp[maxn];
void QuickSort(int *a,int s,int e)
{
if(s>=e)
return ;
int i=s,j=e;
int k=a[(s+e)/2];
while(i!=j){
while(i<j&&k<=a[j])
j--;
if(i==j)
break;
swap(a[i],a[j]);
while(i<j&&k>=a[i])
i++;
swap(a[i],a[j]);
}
for(int i=s;i<=e;i++)
cout<<a[i]<<",";
cout<<endl;
QuickSort(a,s,i-1);
QuickSort(a,i+1,e);
}
int main(int argc,char *argv[])
{
// freopen("data.in.txt","r",stdin);
int n;
cout<<"请输入需要排序的数的个数:";
cin>>n;
cout<<endl;
cout<<"请输入需要排序的数:"<<endl;
for(int i=0;i<n;i++)
cin>>temp[i];
QuickSort(temp,0,n-1);
for(int i=0;i<n;i++)
cout<<temp[i]<<" ";
return 0;
}