Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144693
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

2012年(66)

我的朋友

分类: C/C++

2012-05-16 19:27:04

以下是我写的插入排序算法:
#include
#include
using namespace std;
main()
{
    int a[10]={
     0
    }; 
 int i,j,entry,temp;
    cout<<"input..."<    cin>>entry;
    a[0]=entry;
 for(i=1;i<10;i++)
  {
         cout<<"input..."<         cin>>entry;
    a[i]=entry; 
    if(a[i]    {
    temp=a[i];
     for(j=i-1;a[j]>temp;j--) //a[-1]的值可能很大(这个是我后来分析可能的原因)
      {
             a[j+1]=a[j];
      }
     a[j+1]=temp;
    }
   }
  cout<<"the sort result..."<  for(i=0;i<10;i++)
     cout<}
 
这段代码,也有运行正确的时候,但是大部分是会得到错误的结构。
后来我分析在 for(j=i-1;a[j]>temp;j--) 处当j=0时,j--将变成-1,但是a[-1]是未定义的可能是个很大的值,天知道是什么。
于是将其改为 for(j=i-1;j>=0&&a[j]>temp;j--) 成功了!!
阅读(1303) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

GFree_Wind2012-05-18 12:07:32

a[-1] == a-1

benzix2012-05-18 08:23:10

于是将其改为 for(j=i-1;j>=0&&a[j]>temp;j--) 成功了!!
和我看到出错行的第一反应一样,编程中的边界条件太多了,任何时候都不能忽略边界条件

1471893852012-05-17 21:09:14

呵呵,莫名啊~~这也行。。。