C++排序算法(7种)

来源:互联网 发布:win7网络客户端安装 编辑:程序博客网 时间:2024/06/05 06:11

void   insertsort(int   a[],int   n)           //简单插入排序  
{  
    int   i,j,k,t;  
    for(i=1;i<n;i++)  
        for(j=0;j<i;j++)  
            if(a[j]>a[i])  
            {  
                t=a[i];  
                for(k=i;k>j;k--)   a[k]=a[k-1];  
                a[j]=t;  
                break;  
            }  
}  

void   InsertSort(int   a[],int   n)           //折半插入排序  
{  
    int   i,j,temp,low,high,m;  
    for(i=1;i<n;i++)  
    {  
        temp=a[i];  
        low=0;high=i-1;  
        while(low<=high)  
        {  
            m=(low+high)/2;  
            if(temp<a[m])   high=m-1;  
            else   low=m+1;  
        }  
        for(j=i-1;j>=low;j--)   a[j+1]=a[j];  
        a[low]=temp;  
    }  

void   listinsertsort(int   aa[],int   n)       //表插入排序(不需要移动元素   )  
{  
    int   i;  
    int   j,j0;  
    const   int   maxint=20000;  
    slnode   r[n+1];  
    r[0].a=maxint;r[0].next=1;  
    r[1].next=0;  
    for(i=0;i<10;i++)  
        r[i+1].a=aa[i];  
    for(i=2;i<11;i++)  
    {  
        j=r[0].next;  
        j0=0;  
        while(r[i].a>r[j].a)   {j0=j;j=r[j].next;}  
        r[j0].next=i;  
        r[i].next=j;  
    }  
    arrange(r,n+1);  
    for(i=0;i<10;i++)  
        aa[i]=r[i+1].a;  
}  

void   selectsort(int   a[],int   n)  
{                                                               //简单选择排序...  
    int   i,j,k,t;  
    for(i=0;i<n;i++)  
    {  
        k=i;  
        for(j=i+1;j<n;j++)  
            if(a[j]<a[k])   k=j;  
        if(k!=i)  
        {   t=a[k];a[k]=a[i];a[i]=t;}  
    }  
}  

原创粉丝点击