冒泡排序为什么只对我的数字进行一半排序?JS 和 HTML

我正在通过冒泡排序对 30 个随机生成的数字进行排序,由于某种原因,它们从 15 排序到 29,但它们仍然没有从 0 到 14 排序。这就像排序由于某种原因停止一样。我的尝试是将 i++ 更改为 i-- 但并没有真正起作用。有谁知道循环中出了什么问题谢谢


JavaScript:


arr =new Array(30);

var length = arr.length;


function randomNumber(min,max){

    var min = Math.ceil(min);

    var max = Math.floor (max);

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

            arr[i] = Math.floor(Math.random() * (max-min)) + min;

            document.write("Number " +(i)+ " : "   +arr[i] + "<br >"); }


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

      for (var j = 0; j < arr.length; j++) { 

        

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

          //Swap the numbers

         var tmp = arr[j]; 

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

        arr[j + 1] = tmp; //Replace adjacent number with current number       

        //[[arr[j],arr[j+1]] = [arr[j+1], arr[j]]];} }

      document.write("Number " +(i)+ " : "   +arr[i] + "<br >"); }

    return arr;}

HTML调用该方法:


                            <script> 

                                  

                                randomNumber(1,1000);


                            </script> 

以下是代码的输出:

随机数

冒泡排序


开满天机
浏览 94回答 1
1回答

守候你守候我

不要打印循环内的数组。排序过程尚未完成。将写入命令移到其后面。for (var i = 0; i < arr.length; i++) {&nbsp;&nbsp; &nbsp; for (var j = 0; j < arr.length; j++) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (arr[j] > arr[j + 1]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var tmp = arr[j];&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arr[j] = arr[j + 1];&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arr[j + 1] = tmp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}for (var i = 0; i<length; i++) {&nbsp; &nbsp; document.write("Number " +(i)+ " : "&nbsp; &nbsp;+arr[i] + "<br >");&nbsp; &nbsp; &nbsp;}它应该给你正确的答案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript