Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819693
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: C/C++

2010-09-23 00:57:27

本意是要实现一个3趟的希尔排序,最初的代码如下: 
  for(i = 4; i > 0; i /= 2)
    for(j = 0; j < i; j ++){
      for(k = j + i; k < (readsize / sizeof(unsigned int)); k += i){
        insertdata = fildata[k];
        m = k - i;
        while((insertdata < fildata[m]) && (m >= 0)){
          fildata[m+i] = fildata[m];
          m -= i;
        }
        fildata[m+i] = insertdata;
      }

结果,一运行就报错:段错误

最终发现,是&&操作左右两个表达式相对位置引起的,将两个表达式位置交换下,则一切OK。
因为,按照上面的代码的写法,在将一个值插入到位置0时,将会去访问根本不存在的内存。
阅读(1095) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-26 15:21:15

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com