| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 811 人关注过本帖
标题:冒泡排序的疑问
只看楼主 加入收藏
bizika526
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-10-20
收藏
 问题点数:0 回复次数:6 
冒泡排序的疑问
public void bubbleSort(int [] array2){
         int temp;
        for(int i=0;i<array2.length;i++){
            for(int j=0;j<array2.length-i-1;j++){
                if(array2[j]>=array2[j+1]){
                    temp=array2[j];//为什么要temp???
                    array2[j]=array2[j+1];//与下一条语句不能交换位置?为什么
                         array2[j+1]=array2[j];
                                         array2[j+1]=temp;
                                     }
            }
        }
    }
temp=array2[j];
array2[j+1]=temp;
   //为什么要有一个temp???老师说是临时存放,是什么意思,该怎么理解???
array2[j]=array2[j+1]
array2[j+1]=array2[j];这两条语句不能互换位置?为什么???
搜索更多相关主题的帖子: 疑问 冒泡 
2008-10-07 08:47
zacom
Rank: 2
等 级:论坛游民
威 望:2
帖 子:381
专家分:15
注 册:2007-9-15
收藏
得分:0 
回复 1# bizika526 的帖子
temp=array2[j];
array2[j]=array2[j+1];
array2[j+1]=array2[j];
array2[j+1]=temp;
这几句就是为了交换array2[j],array2[j+1]的值,LZ应该明白吧。。至于为什么要TEMP,想想如果把temp=array2[j]去掉。。接着直接运行array2[j]=array2[j+1]的话。就相当与把array2[j+1]的值复值给array2[j],则此时array2[j]的原值就被覆盖掉了。。如果不使用temp=array2[j],怎么保存array2[j]的值。

array2[j]=array2[j+1]
array2[j+1]=array2[j];这两条语句不能互换位置?为什么???
其实从程序本身来说。。这2条语句互换位置没什么作用。不过如果换了那么就要改temp=array[j+1],至于原因LZ想想应该就明白了

没有最好只有更好
2008-10-07 10:23
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
这里牵涉到覆盖问题。

给你一个假设:假如要你把杯子里装满的可乐换成雪碧。你怎么做?你肯定得先找个东西装可乐吧,这个东西就是所谓的临时存储。

倚天照海花无数,流水高山心自知。
2008-10-07 11:03
smile8
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-8-29
收藏
得分:0 
临时存放就是暂时放一下了

ff
2008-10-07 15:38
大头小脑
Rank: 1
来 自:512的废墟
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-10-7
收藏
得分:0 
我们老师在C语言的第一节课 让我们写一个将两个瓶子的酒互换的算法,如果你要交换两个瓶子里面的酒,难道不用第三个瓶子来中间暂存下吗?temp就是那个暂存的瓶子。
2008-10-07 20:42
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 
记得我看过一道题,交换两个变量的值不需要第三变量。

论坛是我家灌水靠大家
2008-10-07 23:02
伤狼
Rank: 1
等 级:新手上路
威 望:2
帖 子:58
专家分:0
注 册:2008-10-10
收藏
得分:0 
temp=array2[j];//
array2[j]=array2[j+1];//与下一条语句不能交换位置?为什么
    array2[j+1]=array2[j];
    array2[j+1]=temp;


你的疑问上面解决了
但是 你的代码是错的啊  

你这样到最后显示的应该都是 最原始的array2[j+1]里面的值了
2008-10-10 14:23
快速回复:冒泡排序的疑问
数据加载中...
 
   



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

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