yuanquan001 发表于 2007-11-15 14:14

[求助]斑竹 蓝的和红的是什么意思啊?有甚作用?

&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++)<BR></FONT>             for(i=0;i&lt;x.length;i++)<BR>                <FONT color=#ff0000>if(x[i]&gt;x[i+1])<BR>                   { t=x[i];<BR>                   x[i]=x[i+1]; <BR>                   x[i+1]=t;}<BR>                }<BR></FONT>    <BR>&lt;/script&gt;

madpbpl 发表于 2007-11-15 14:29

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

lmhllr 发表于 2007-11-15 14:32

这就是传说中的冒泡排续了吧.呵呵...<BR><BR>[code]<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;[/code]

yuanquan001 发表于 2007-11-15 14:35

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

lmhllr 发表于 2007-11-15 14:44

如果没有第一个循环的话,第一个数只判断一次,这样的话会造成不正确的结果<BR><BR>你可以试着把第一个循环去掉看看结果是不是错的<BR><BR>其实,个人认为,这种写法可读性比较差<BR><BR>我觉得应该可以这样改<BR>[code]<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>[/code]

yuanquan001 发表于 2007-11-15 14:44

<P>斑竹,指导一下吧。。。。。。[em08]</P>

yuanquan001 发表于 2007-11-15 14:46

太强大了,斑竹,我看明白了[em17]

zhulei1978 发表于 2007-11-20 21:07

一楼的代码做了很多重复比较,可以做如下优化:<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=x.length;j&gt;1;j--)<BR>             for(i=0;i&lt;j-1;i++)<BR>                if(x[i]&gt;x[i+1])<BR>                   { t=x[i];<BR>                   x[i]=x[i+1]; <BR>                   x[i+1]=t;}<BR>                }<BR>    <BR>&lt;/script&gt;<BR>

aoxiang218 发表于 2008-4-18 14:42

冒泡法不是这样的

冒泡法不是这样的

页: [1]

编程论坛