归并
#include<algorithm>
void Merge(int a[],int s,int m,int e,int temp[])
{
int pb=0;
int p1=s,p2=m+1;
while(p1<=m && p2<=s)
{
if(a[p1]<a[p2])
temp[pb++]=a[p1++];
else
temp[pb++]=a[p2++];
}
while(p1<=m)
temp[pb++]=a[p1++];
while(p2<=e)
temp[pb++]=a[p2++];
for(int i=0;i<=e-s;i++)
a[s+i]=temp[i];
}
void MergeSort(int a[],int s,int e,int temp[])
{
int m=s+(e-s)/2;
if(s<e)
{
MergeSort(a,s,m,temp);
MergeSort(a,m+1,e,temp);
Merge(a,s,m,e,temp);
}
}
int main()
{
int a[10]={1,5,3,6,7,8,52,49,12,15};
int temp[10];
MergeSort(a,0,9,temp);
for(int j=0;j<10;j++)
printf("%3d",a[j]);
return 0;
}
快排
{
int n=*a;
*a=*b;
*b=n;
}
void QuickSort(int a[],int s,int e)
{
if(s>=e) return ;
int i=s,j=e;
int k=a[s];
while(i!=j)
{
while(i<j && a[j]>=k)
j--;
swap(&a[i],&a[j]);
while(i<j && a[i]<=k)
i++;
swap(&a[i],&a[j]);
}
QuickSort(a,s,i-1);
QuickSort(a,i+1,e);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10]={12,11,15,46,13,20,13,16,11,3};
QuickSort(a,0,9);
for(int i=0;i<10;i++)
printf("%3d",a[i]);
return 0;
}