永发信息网

高手请进~~~JavaScript循环问题!

答案:1  悬赏:60  手机版
解决时间 2021-08-12 16:45
  • 提问者网友:蔚蓝的太阳
  • 2021-08-12 00:28

<head>

<script language="javascript">

function bubbleSort(arr){

       var temp;

       var exchange;

    for(var i=0;i<arr.length;i++){          //这个循环起的是什么作用?

              exchange=false;

           for(var j=arr.length-2;j>=i;j--){     //我想的是:这里的i不过是从0变到arr.length-1,而 j>0不就包含了j>1…. arr.length-1吗,所以为什么不在这里直接令i=0,并且去掉那个外循环呢?                                                                  

                     if(eval(arr[j+1])>eval(arr[j])){

                            temp=arr[j+1];

                            arr[j+1]=arr[j];

                            arr[j]=temp;

                            exchange=true;

                            }

                     }

                     if(!exchange){

                            break;

                            }

              }

              return arr;

}

function display(el){

       str=document.getElementById('source').value;

       strs=bubbleSort(str.split(','));

       str="";

       for(var i=0;i<strs.length;i++){

              str+=strs[i]+' ';

              }

              alert(str);

}

</script>

</head>

<body>

<center>

<h1>利用流程控制语句实现冒泡排序</h1>

<hr>

<br>

<h5>显示如下信息....</h5>

<br>

请输入排序序列:<input type="text" id="source"><input type="button" value="排序" onclick="display();"><span>(输入序列请用半角逗号隔开)</span>

</center>

</body>

 

在此声明啊!本人初学者还是菜鸟一枚,呵呵~~所以请大家多多指教了,帮我理一下这个思路。

最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-08-12 01:20
冒泡排序的原理说得通俗点是这样的:一群人杂乱地站在那里,你要按照身高给他们排队,你应该怎么做呢?先让他们随机地排成一排,然后把第一个人和第二个人比较身高,找出较高的那个再和第三个人比……重复这个过程,最后找出来的那个就是所有人中最高的(这就是内循环所起的作用)。但是做完这一步还没完啊,剩下的人还是高低不齐地排在一起啊,所以上述过程又要重新来一次,不过这一次参与比较的总人数比上一次少一人了,因为那个最高的家伙已经孤零零地站在队伍外面了。第二次的比较完成后,找出来的那个人,就肯定是第二高的人。这样不断重复(这是外循环的作用),到最后剩下的那个人,就肯定是全队人中最矮的那个(同情一下)。现在你应该明白了吧:内循环就是从剩下的数中找出最大的,而外循环就是使内循环重复执行,并且每次把上一次找出的那个数排除在查找范围之外。如果把外循环去掉,那么就只能找出所有数中最大的那个,而不是排序。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯