几种排序的算法模板

//选择排序
void selectsort()
{
    for(int i=1;i<=n;i++)
    {
        int k=i;
        for(int j=i;j<=n;j++)
        {
            if(A[j]<A[k])
            {
                k=j;
            }
        }
        int temp=A[i];
        A[i]=A[k];
        A[k]=temp;
    }    
}
//插入排序
int A[maxn],n;
void insertsort()
{
    for(int i=2;i<=n;i++)
    {
        int temp=A[i],j=i;
        while(j>1&&temp<A[j-1]
        {
            A[j]=A[j-1];
            j--;
        }
        A[j]=temp;
    }
}
//快速排序
void quick_sort(int q[],int l,int r)
{
    if(l>=r) return ;
    int i=l-1,j=r+1,x=q[l+r>>1];
    while(i<j)
    {
        do i++;while(q[i]<x);
        do j++;while(q[j]>x);
        if(i<j) swap(q[i],q[j]); 
    }
    quick_sort(q,l,j);
    quick_sort(q,j+1,r);
 } 
 //归并排序
 void merge_sort(int q[],int l,int r)
 {
     if(l>=r) return ;
     int mid=l+r>>1;
     merge_sort(q,l,mid);
     merge_sort(q,mid+1,r);
     int k=0,i=1,j=mid+1;
     while(i<=mid&&j<=r)
     {
         if(q[i]<=q[j]) tmp[k++]=q[i++];
         else tmp[k++]=q[j++];
         while(i<=mid) tmp[k++]=q[i++];
         while(j<=r) tmp[k++]=q[j++];
         for(i=1,j=0;i<=r;i++,j++) q[i]=tmp[j];
     }
  } 

 

posted @ 2021-03-09 21:18  只配吃三碗饭  阅读(71)  评论(0)    收藏  举报