1.快速排序
void sort(int *a,int left,int right)
{
if(left<=right)
return ;
int i=left,j=right,key=a[left];
while(i<j)
{
while(i<j&&key<=a[j])
{
j--;
}
a[i]=a[j];
while(i<j&&key>=a[i])
{
i++;
}
a[j]=a[i];
}
a[i]=key;
sort(a,left,i-1);
sort(a,i+1,right);
}
2.归并排序
//合并两个有序序列a[first...mid]和a[mid+1...last]合并
void merage(int a[],int first,int mid,int last,int temp[])
{
int i=first,j=mid + 1;
int m=mid,n=last;
int k=0;
while(i<=m&&j<=n)
{
if(a[i]<=a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=m)
{
temp[k++]=a[i++];
}
while(j<=n)
{
temp[k++]=a[j++];
}
for(int i=0;i<k;i++)
{
a[first+i]=temp[i];
}
}
//归并排序
void meragesort(int a[],int first,int last, int temp[])
{
if(first<last)
{
int mid=(first+last)/2;
meragesort(a,first,mid,temp);
meragesort(a,mid+1,last,temp);
merage(a,first,mid,last,temp);
}
}
3.插入排序
void insertsort(int a[],int n)
{
for(int i=1;i<n;i++)
{
int k=a[i];
int j=i-1;
while(j>=0&&k<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
}
4.冒泡排序
void bullesort(int a,int n)
{
for(int i=0;i<n-1;i++)
{
bool flag=true;
for(int j=0;j<n-1-i;j++)
{
if(a[j]>a[j-1])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=a[j];
flag=false;
}
}
if(flag)
break;
}
}
5.选择排序
void selectsort(int a[],int n)
{
for(int i=0;i<n-1;i++)
{
int k=i;
for(int j=i+1;j<n;j++)
{
if(a[j]<a[k]
{
k=j;
}
}
if(k!=i)
{
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
6.sort 排序
bool cmp(int a,int b)
{
return a>b;
}
sort(a,a+n);
sort(a,a+n,cmp);