Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6528
  • 博文数量: 6
  • 博客积分: 190
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-21 11:49
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友
最近访客

分类:

2011-04-21 22:12:42

一、插入排序
   插入排序由N-1趟排序组成。对如P=1趟到P=N-1趟,插入排序保证从位置0到位置P上的元素以排序。

void insertionsort(int a[],int N)
{
    int j,p,tem;
    for(p=1;p<=N-1;p++)
    {
        tem=a[p];
        for(j=p;j>0&&a[j-1]>tem;j--)
        {
            a[j]=a[j-1];
        }
        a[j]=tem;
    }
}

时间复杂度位(N^2)

二、希尔排序
   希尔排序使用一个序列h1,h2,h3,.......h(t),叫做增量序列。只要h1=1,任何增量序列都是可行的,不过,有些增量序列比另外一些更好。使用增量h(k)的一趟排序后,对于每一个i我们有a[i]<=a[i+h(k)].
   增量序列一种流行(但是不好)的选着是shell建议的序列:h(t)=[N/2]和h(k)=[h(k+1)/2]。
void shellsort(int a[],int N)
{
    int i,j,tmp,Insrement;
    for(Insrement=N/2;Insrement>0;Insrement/=2)
    {    
        for(i=Insrement;i
        {   tmp=a[i];
            for(j=i;j>=Insrement;j-=Insrement)
            {
                if(a[j-Insrement]>tmp)
                    a[j]=a[j-Insrement];
                else
                    break;
            }
            a[j]=tmp;
        }
    }
}


阅读(215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~