Chinaunix首页 | 论坛 | 博客
  • 博客访问: 594071
  • 博文数量: 92
  • 博客积分: 5026
  • 博客等级: 大校
  • 技术积分: 1321
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-28 11:04
文章分类

全部博文(92)

文章存档

2011年(9)

2010年(17)

2009年(12)

2008年(54)

我的朋友

分类: C/C++

2008-03-31 13:55:53

//希尔排序(分组式的直接插入排序)
void shell_group_pass(int* buf, int len, int increment) {
 printf("shell group pass %d\n", increment);
 for(int i=0; i  for(int j=i+increment; j   int now = buf[j];
   if(now > buf[j-increment])continue;
   int k;
   for(k=j-increment; k>=0; k-=increment) {
    if(buf[k] > now)buf[k+increment] = buf[k];
    else break;
   }
   buf[k+increment] = now;
  }
 }
}
void shell_sort(int* buf, int len) {
 int increment = 12;
 do {
  increment = increment/3+1;
  shell_group_pass(buf, len, increment);
 } while(increment > 1);
 
}
阅读(1294) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~