| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 303 人关注过本帖
标题:起泡排序的疑惑
只看楼主 加入收藏
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
快速回复:起泡排序的疑惑
数据加载中...
 
   



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

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