| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:冒泡排序,求解疑问。请各老师,高手指点一二
只看楼主 加入收藏
djslc
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2009-3-21
结帖率:84.62%
收藏
已结贴  问题点数:5 回复次数:8 
冒泡排序,求解疑问。请各老师,高手指点一二
这是一个冒泡排序,网上看例程,自己再模仿写下来的。本人还有有些许疑问,请各位老师、高手指点一二。帮忙给各语句添加注释,注明为什么要这样写,这句的作用是什么。谢谢……
程序代码:
/*冒泡排序*/

#include"stdio.h"

main()

 
{ 
    int i,j,temp,a[3];
    for(i=0;i<3;i++)
    scanf ("%d,",&a[i]); 
    for(j=0;j<=2;j++)

        {
            for (i=0;i<3-j;i++)
            if (a[i]>a[i+1]) 

            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;}
            } 

            for(i=1;i<4;i++)
        }

    printf("%5d,",a[i] );
    printf("\n");
    getch();

} 


[ 本帖最后由 djslc 于 2011-3-22 13:35 编辑 ]
搜索更多相关主题的帖子: color 老师 
2011-03-22 13:33
天涯天下去
Rank: 2
等 级:论坛游民
帖 子:41
专家分:35
注 册:2010-12-2
收藏
得分:1 
你的程序好多的错哦
我也是刚刚学 参考下吧

//冒泡法排序
#include"stdio.h"

main()

{
    int i,j,temp,a[3];         //声明变量
    for(i=0;i<3;i++)           //用for循环为数组a[3]循环赋值
    scanf ("%d,",&a[i]);       //输入数值

    for(j=0;j<=2;j++)          //此处用双循环实现冒泡的算法:具体为外层控制比较的趟数,内层控制每趟比较的次数;

        {
            for (i=0;i<3-j;i++) //此处i<3-j是因为没比较一趟就会有一个最小的或最大的(你的程序应该是小的在前边)排到前边 下一次比较的时候就可以不用处理;
            if (a[i]>a[i+1])    //判断条件 当数组中下标为i的元素比下标为i+1的数大时执行下边语句
            {
                temp=a[i];      //此三行作用是  借助第三变量将下标为i和i+1的元素互换  实现小的在前边得效果
                a[i]=a[i+1];
                a[i+1]=temp;
            }

            
        }
              for(i=1;i<4;i++)  //此处为循环输出数组a[]中各元素
                printf("%5d,",a[i-1] );  //此处应该注意的是 a[i]与for中i的关系;当for中i值为一时a[i]中的i就应该减1因为必须保证从第0号元素输出
   
    printf("\n");
  

}

你参照下吧

学无止境
2011-03-22 14:58
djslc
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2009-3-21
收藏
得分:0 
回复 2楼 天涯天下去
感谢指导
2011-03-22 16:23
天涯天下去
Rank: 2
等 级:论坛游民
帖 子:41
专家分:35
注 册:2010-12-2
收藏
得分:0 
建议你找本书看看  不要急于求成  细心体会 时间久了积累的多了就会好了  
一起加油吧!!!

学无止境
2011-03-22 16:29
变幻小子
Rank: 6Rank: 6
来 自:广东陆丰
等 级:侠之大者
帖 子:188
专家分:473
注 册:2011-3-4
收藏
得分:1 
#include"stdio.h"

main()

{
    int i,j,temp,a[3];
    for(i=0;i<3;i++)
    scanf ("%d,",&a[i]);
    for(j=0;j<=2;j++)

        {
            for (i=0;i<3-j;i++)
            if (a[i]>a[i+1])

            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
     }

            for(i=1;i<4;i++)

    printf("%5d,",a[i] );
    printf("\n");
}
}
我是根据你的函数改了一下不知道可以不

明天的梦
2011-03-22 18:45
变幻小子
Rank: 6Rank: 6
来 自:广东陆丰
等 级:侠之大者
帖 子:188
专家分:473
注 册:2011-3-4
收藏
得分:0 
#include"stdio.h"

main()

{
    int i,j,temp,a[3];
    for(i=0;i<3;i++)
    scanf ("%d,",&a[i]);
    for(j=0;j<=2;j++)

        {
            for (i=0;i<3-j;i++)
            if (a[i]>a[i+1])

            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;}  //多了"}"
            }

            for(i=1;i<4;i++)
        }   //这个可以改到后面

    printf("%5d,",a[i] );
    printf("\n");
    getch();  //这个可以不要

}




明天的梦
2011-03-22 18:49
djslc
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2009-3-21
收藏
得分:0 
回复 6楼 变幻小子
感谢
2011-03-23 17:26
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:1 

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-03-23 22:36
xxbeifeng
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2011-3-22
收藏
得分:1 
程序代码:
for(j=0;j<=2;j++)

        {
            for (i=0;i<3-j;i++)
            if (a[i]>a[i+1]) 

            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;}
            } 

若j=0,那么内层循环为i=0;i<3;i++
                    此时a[i+1]可以为a[3],数组溢出了吧
2011-03-23 23:06
快速回复:冒泡排序,求解疑问。请各老师,高手指点一二
数据加载中...
 
   



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

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