| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 894 人关注过本帖
标题:[求助]斑竹 蓝的和红的是什么意思啊?有甚作用?
收藏  订阅  推荐  打印 
yuanquan001
Rank: 2
等级:注册会员
帖子:97
积分:1196
注册:2007-9-23
[求助]斑竹 蓝的和红的是什么意思啊?有甚作用?

<script language="javascript">
var x=new Array(55,80,23,30,20,76);
document.write("调用函数前x:"+x+" ");
sort(x);
document.write("调用函数后x:"+x+" ");
function sort(x)
{
for(j=0;j<x.length;j++)
for(i=0;i<x.length;i++)
if(x[i]>x[i+1])
{ t=x[i];
x[i]=x[i+1];
x[i+1]=t;}
}

</script>
搜索更多相关主题的帖子: 斑竹  
2007-11-15 14:14
madpbpl
Rank: 6Rank: 6
等级:金牌会员
威望:7
帖子:2560
积分:27775
注册:2007-4-5

这是一个数组排序
红色部分是比较两个相邻的数,如果前一个数比后一个数大,则这两个数和互换。

2007-11-15 14:29
lmhllr
Rank: 12Rank: 12Rank: 12
等级:版主
威望:42
帖子:1450
积分:23340
注册:2005-5-12

这就是传说中的冒泡排续了吧.呵呵...


程序代码:
<BR>&lt;script language="javascript"&gt;<BR>var x=new Array(55,80,23,30,20,76);<BR> document.write("调用函数前x:"+x+" ");<BR> sort(x);<BR> document.write("调用函数后x:"+x+" ");<BR> function sort(x)<BR> {<BR> <FONT color=#0000ee> for(j=0;j&lt;x.length;j++)//一个for循环,遍历x数组<BR></FONT> for(i=0;i&lt;x.length;i++)<BR> <FONT color=#ff0000>if(x[i]&gt;x[i+1])//红色部分为:如果前面那个值大于后面的,交换两个变量的值,C里面经常用到这个<BR> { t=x[i];<BR> x[i]=x[i+1]; <BR> x[i+1]=t;}<BR> }<BR></FONT> <BR>&lt;/script&gt;
2007-11-15 14:32
yuanquan001
Rank: 2
等级:注册会员
帖子:97
积分:1196
注册:2007-9-23

我觉得地一个for循环就没用,
同样第2个for循环不也遍历了吗?
斑竹,我环视不明白

2007-11-15 14:35
lmhllr
Rank: 12Rank: 12Rank: 12
等级:版主
威望:42
帖子:1450
积分:23340
注册:2005-5-12

如果没有第一个循环的话,第一个数只判断一次,这样的话会造成不正确的结果

你可以试着把第一个循环去掉看看结果是不是错的

其实,个人认为,这种写法可读性比较差

我觉得应该可以这样改

程序代码:
<BR>&lt;script language="javascript"&gt;<BR>var x=new Array(55,80,23,30,20,76);<BR> document.write("调用函数前x:"+x+" ");<BR> sort(x);<BR> document.write("调用函数后x:"+x+" ");<BR> function sort(x)<BR> {<BR> for(j=0;j&lt;x.length;j++)<BR> for(i=j;i&lt;x.length;i++)<BR> if(x[j]&gt;x[i+1])<BR> { <BR> t=x[j];<BR> x[j]=x[i+1]; <BR> x[i+1]=t;<BR> }<BR> }<BR> <BR>&lt;/script&gt;<BR>
2007-11-15 14:44
yuanquan001
Rank: 2
等级:注册会员
帖子:97
积分:1196
注册:2007-9-23

斑竹,指导一下吧。。。。。。

2007-11-15 14:44
yuanquan001
Rank: 2
等级:注册会员
帖子:97
积分:1196
注册:2007-9-23

太强大了,斑竹,我看明白了
2007-11-15 14:46
zhulei1978
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:654
积分:8256
注册:2006-12-17

一楼的代码做了很多重复比较,可以做如下优化:
<script language="javascript">
var x=new Array(55,80,23,30,20,76);
document.write("调用函数前x:"+x+" ");
sort(x);
document.write("调用函数后x:"+x+" ");
function sort(x)
{
for(j=x.length;j>1;j--)
for(i=0;i<j-1;i++)
if(x[i]>x[i+1])
{ t=x[i];
x[i]=x[i+1];
x[i+1]=t;}
}

</script>
2007-11-20 21:07
aoxiang218
Rank: 1
等级:新手上路
帖子:8
积分:192
注册:2008-4-18
冒泡法不是这样的

冒泡法不是这样的
2008-4-18 14:42
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.064070 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved