| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:关于 起泡排序法 的问题
只看楼主 加入收藏
司徒瑾贤
Rank: 2
等 级:论坛游民
帖 子:25
专家分:44
注 册:2010-3-18
结帖率:71.43%
收藏
已结贴  问题点数:15 回复次数:5 
关于 起泡排序法 的问题
     严蔚敏 《数据结构》第一章提到  起泡排序法,"当初始序列为自大到小有序时,基本操作的执行次数为n(n-1)/2."
      我认为执行次数应为(n-1)(n-2)/2.
            对数组a[n]={n-1,n-2,... ...,0}  排序如下:
                     for(i=0;i<n-1;i++){
                       for(j=0;j<n-i-1;j++){
                              if(a[j]>a[j+1]){
                                 t=a[j];
                                 a[j]=a[j+1];
                                 a[j+1]=t;
                             }  
                           }
                         }
          请高手赐教。
2011-09-11 22:13
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:2 
0到n-1应该算n,不是n-1

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-09-11 22:20
初恋这小事
Rank: 2
等 级:论坛游民
帖 子:12
专家分:12
注 册:2011-9-11
收藏
得分:1 
           for(i=0;i<n;i++){
                       for(j=0;j<n-1;j++){
                              if(a[j]>a[j+1]){
                                 t=a[j];
                                 a[j]=a[j+1];
                                 a[j+1]=t;
                             }  
                           }
                         }
2011-09-12 11:58
lhm271340355
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-9-12
收藏
得分:1 
         for(i=0:i<n:i++){
                     for(j=0:j<n-1:j++){
                            if(a[j]>a[j+1]{
                               t=a[j]
                               a[j]=a[j+1]:
                               a[j=1]=t:
                           }
                        }
                     }
2011-09-12 13:24
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
收藏
得分:8 
以下是引用司徒瑾贤在2011-9-11 22:13:02的发言:

     严蔚敏 《数据结构》第一章提到  起泡排序法,"当初始序列为自大到小有序时,基本操作的执行次数为n(n-1)/2."
      我认为执行次数应为(n-1)(n-2)/2.
            对数组a[n]={n-1,n-2,... ...,0}  排序如下:
                     for(i=0;i<n-1;i++){
                       for(j=0;j<n-i-1;j++){
                              if(a[j]>a[j+1]){
                                 t=a[j];
                                 a[j]=a[j+1];
                                 a[j+1]=t;
                             }  
                           }
                         }
          请高手赐教。

第0次:执行,n-1;
第1次:执行,n-2;
...
...
...
第n-2次:执行,n-1-(n-2);


执行完毕:相加就是答案了。

[ 本帖最后由 scott_dw 于 2011-9-12 15:16 编辑 ]
2011-09-12 15:00
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:3 
比较次数最多的肯定是n-1次比较,最少的是1次比较,从1加到n-1结果显然是n(n-1)/ 2

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-09-12 17:16
快速回复:关于 起泡排序法 的问题
数据加载中...
 
   



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

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