基础学习第六弹

来源:互联网 发布:淘宝客小猪优惠券 编辑:程序博客网 时间:2024/05/21 19:17

基本的排序算法

直接插入排序

O(n2),稳定

void InsertSort(int r[],int n){    int i,j,s;    for(i=1;i<n;++i)    {        s=r[i];     //s作为一个哨兵        j=i-1;       //从后往前        while(s<r[j])           {            r=[j+1]=r[j];  //后移比s大的            --j;        }        r[j+1]=s;  //将s插入    }}

希尔排序

O(nlogn2)-O(n2)之间,不稳定

void shellsort(int r[],int n){    int d,i,j,s;    d=n/2;         //第一个步长    while (d>=1)    {        for(i=d;i<n;++i)// 直接插入排序        {            s=r[i];            j=i-d; //直接插入是i-1            while(j>=0&&s<r[j])            {                r[j+d]=r[j];                j=j-d;  //直接插入是j-1              }            r[j+d]=s;        }        d=d/2;        //步长变化    }}

直接选择排序

O(n2),不稳定

void SelectSort(int r[],int n){    int i,j,s;    for(i=0;i<n;++i)   //做n次排序    {        for(j=i+1;j<n;++j) //i和之后的一一比较        {            if(r[j]<r[i])            {                s=r[i];                r[i]=r[j];                r[j]=s;             }           }    }}

堆排序

待续。。。

这里写代码片
原创粉丝点击