标题:起泡排序的疑惑
只看楼主
xuan228
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-26
结帖率:100%
已结贴  问题点数:10 回复次数:2 
起泡排序的疑惑
为何第一段程序执行后结果会报错,第二段却没事呢?该怎么改?谢谢

//用起泡法对10个数进行由小到大排列
#include <stdio.h>
#define N 10
int main()
{
    int num[N],i,j,smaller;
    printf("input 10 numbers:\n");
    for (i=0;i<N;i++)
        scanf("%d",&num[i]);
    for (j=0;j<N-1;j++)                    //N个数循环N-1趟
        for (i=0;i<N-j;i++)                //第j趟进行N-j次比较
            if (num[i]>num[i+1])
            {    smaller=num[i];
                num[i]=num[i+1];
                num[i+1]=smaller;
            }
    printf("the number from low to high is : \n ");
    for (i=0;i<N;i++)
        printf(" %4d",num[i]);
    printf("\n");
    return 0;
}



//用起泡法对10个数进行由小到大排列
#include <stdio.h>
#define N 10
int main()
{
    int num[N+1],i,j,smaller;
    printf("input numbers:\n");
    for (i=1;i<=N;i++)
        scanf("%d",&num[i]);
    for (j=1;j<N;j++)                        //N个数循环N-1趟
        for (i=1;i<=N-j;i++)                //第j趟进行N-j次比较
            if (num[i]>num[i+1])
            {    smaller=num[i];
                    num[i]=num[i+1];
                    num[i+1]=smaller;
            }
    printf("the number from low to high is : \n ");
    for (i=1;i<=N;i++)
        printf(" %4d",num[i]);
    printf("\n");
    return 0;
}
搜索更多相关主题的帖子: 起泡 
2010-08-13 15:51
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
得分:10 
   for (j=0;j<N-1;j++)                    //N个数循环N-1趟
        for (i=0;i<N-j;i++)                //当j = 0时,会出现num[N-1]和num[N]的比较,而num[N]是不存在的元素
            if (num[i]>num[i+1])
            {    smaller=num[i];
                num[i]=num[i+1];
                num[i+1]=smaller;
            }
2010-08-13 16:10
xuan228
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-26
得分:0 
以下是引用erikyo在2010-8-13 16:10:46的发言:

   for (j=0;j<N-1;j++)                    //N个数循环N-1趟
        for (i=0;i<N-j;i++)                //当j = 0时,会出现num[N-1]和num[N]的比较,而num[N]是不存在的元素
            if (num>num)
            {    smaller=num;
                num=num;
                num=smaller;
            }


哦,谢谢,改为for (i=0;i<N-1-j;i++) 即可
2010-08-13 17:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315608-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.115861 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved