| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖
标题:一个关于冒泡排序的问题
只看楼主 加入收藏
Romantic8121
Rank: 2
等 级:论坛游民
帖 子:50
专家分:21
注 册:2011-4-11
结帖率:100%
收藏
 问题点数:0 回复次数:6 
一个关于冒泡排序的问题
程序代码:
for(i=0;i<n-1;i++)
        for(j=0;j<n-1;j++)
            if(a[j]<a[j+1])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }

程序代码:
for(i=0;i<n-1;i++)
        for(j=0;j<n-1-i;j++)
            if(a[j]<a[j+1])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }

这两个有什么区别么,哪个是正确的??
搜索更多相关主题的帖子: 问题 
2011-05-15 11:29
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
第二个对

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2011-05-15 12:11
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
都正确,第二个是优化版的,不过都有点瑕疵

第一个
for(i=0;i<n-1;i++)
        for(j=0;j<n-1;j++)              // j 从 0~n-1的话,j = n-1 的时候, a[j+1] 就越界了
            if(a[j]<a[j+1])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }

第二个也有这样的问题

改成
for(i=0;i<n-1;i++)
        for(j=1;j<n-1;j++)
            if(a[j-1]<a[j])
            {
                t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }

第二个的意思是,i 循环了一次后,最大的数就放在数组最后了,第二次 i 循环, j 就只用比较 n-2 次
如此下去,第 i 次 i 循环,j 只用比较 n-1-i次

2011-05-15 12:16
杨靖赟
Rank: 1
来 自:秦皇岛
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-15
收藏
得分:0 
第二个比较好,“n-1”后“-i”表示已经排好的个数,没有必要再遍历数组全部元素了
2011-05-15 12:43
王者自谦1992
Rank: 2
等 级:论坛游民
帖 子:57
专家分:74
注 册:2011-4-6
收藏
得分:0 
两个都正确的,但是第二个好,第一个造成已经排出的最值在以后的循环中仍然比较,其实没必要......第二种排除了这样的结果,一次内层循环的次数减少了,有利提高效率.....
2011-05-15 17:10
bugyangqi
Rank: 1
来 自:苏州
等 级:新手上路
帖 子:8
专家分:3
注 册:2011-5-9
收藏
得分:0 
都是冒泡排序,但第二个减少了不必要的重复有助于减轻cpu的压力,效率更高一点,不过对于这种小程序,都差不多

没有没有bug的程序,人生也一样。。
2011-05-15 18:20
月如水0
Rank: 2
等 级:论坛游民
帖 子:29
专家分:76
注 册:2011-5-8
收藏
得分:0 
第二个好,内层n-1-i就得了,
2011-05-15 18:39
快速回复:一个关于冒泡排序的问题
数据加载中...
 
   



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

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