排序


一.快速排序   时间复杂度:平均 nlogn  最坏 n2   空间:n

int a[N];
int cmp(int x,int y)
{
    return x<y;//递增return x>y;//递减 
}
sort(a+1,a+1+n,cmp);

struct node
{
    int a,b;
}e[N];
int cmp(node x,node y)
{
    return x.a<y.a;//以a为关键字,递增return x.a>y.a;//以a为关键字,递减 
}
sort(e+1,e+1+n,cmp);

二.归并排序  时间复杂度:nlogn 很稳定哦  空间复杂度:n/2 + logn,约为n

 1 void mergesort(int left,int right)
 2 {
 3     if(left==right)return;
 4     int mid=(left+right)>>1;
 5     mergesort(left,mid);mergesort(mid+1.right);
 6     int i=left,j=mid+1,p=left;
 7     while(i<=mid&&j<=right)
 8     {
 9         if(a[i]>a[j])temp[++p]=a[++i];
10         else temp[++p]=a[++j];
11     }
12     while(i<=mid)temp[++p]=a[++i];
13     while(j<=right)temp[++p]=a[++j];
14     for(i=left;i<=right;++i)a[i]=temp[i];
15 }


三.冒泡排序 

1 for(int i=1;i<=n;++i)
2 for(int j=1;j<n-1i;++j)
3 if(a[j]>a[j+1])swap(a[j],a[j+1]);

 

 

 

 

posted @ 2021-11-19 16:04  yfmd  阅读(33)  评论(0编辑  收藏  举报