3 4 5 Titre 6 7 8 9

Maison  >  Article  >  interface Web  >  Comment implémenter le tri à bulles

Comment implémenter le tri à bulles

巴扎黑
巴扎黑original
2017-06-26 15:15:411221parcourir
 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>Title</title> 6 </head> 7  8 <body> 9 <script>10     var arr = [3,2,4,1,5];11 12     /*13     * 每次循环比较,取出当前的值和他的下一位进行大小的比较,如果当前值比下一个要大(小),交换位置,每次循环确定一个最大(最小)数14     *15     * 因为每次比较的数列中,最后一个没有下一位,所以最后一次没有必要再参与比较,所以每次循环比较的次数是要比较的数列元素个数-1次16     * */17     for (var i=0; i<arr.length-1; i++) {18 19         // 获取当前位的值20         var a = arr[i];21         // 获取下一位的值22         var b = arr[i+1];23 24         // 这里我们以小值在后,如果a小于b交换位置25         if (a < b) {26             arr[i] = b;27             arr[i+1] = a;28         }29 30     }31 32     // 进过上面的一轮循环,就确定这个数列中需要比较的值中最小的值33     console.log(arr);34 35 </script>36 </body>37 </html>
 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>Title</title> 6 </head> 7  8 <body> 9 <script>10 //    var arr = [3,2,4,1,5];11 12     var arr = [];13     for (var i=0; i<30000; i++) {14         arr.push(i);15     }16     arr.sort(function () {17         return Math.random() - 0.5;18     });19 20     /*21     * 每一轮的比较确定一个值,整个比较过程需要比较的次数是 长度-1,以为最后一轮的值,只有一个了,没有比较在比较了22     * */23 24     /*25     * 统计循环的总次数26     * */27     var n = 0;28 29     console.time(&#39;a&#39;);30     for ( var j=0; j<arr.length-1; j++ ) {31 32         for (var i=0; i<arr.length-1; i++) {33             var a = arr[i];34             var b = arr[i+1];35             if (a < b) {36                 arr[i] = b;37                 arr[i+1] = a;38             }39 40             n++;41         }42 43     }44     console.timeEnd(&#39;a&#39;);45 46     console.log(n);47     console.log(arr);48 49 </script>50 </body>51 </html>
 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>Title</title> 6 </head> 7  8 <body> 9 <script>10     //var arr = [3,2,4,1,5];11 12     var arr = [];13     for (var i=0; i<30000; i++) {14         arr.push(i);15     }16     arr.sort(function () {17         return Math.random() - 0.5;18     });19 20     var n = 0;21 22     console.time(&#39;a&#39;);23     for ( var j=0; j<arr.length-1; j++ ) {24 25         /*26         * 随着大的循环的次数的增加,对应的小的循环就应该减少,减少j次27         * */28         for (var i=0; i<arr.length-1-j; i++) {29             var a = arr[i];30             var b = arr[i+1];31             if (a < b) {32                 arr[i] = b;33                 arr[i+1] = a;34             }35 36             n++;37 38         }39 40     }41     console.timeEnd(&#39;a&#39;);42 43     console.log(n);44     console.log(arr);45 46 </script>47 </body>48 </html>





Titre

<script><br>// var arr = [3,2,4,1,5];<br>// var arr = [5,4,3,1,2];</p> <p>var arr = [];<br> for (var i=0; i<30000; i++) {<br/> arr.unshift(i);<br/> }<br/> arr[29999] = 1 ;<br/> arr[29998] = 0;</p><p>// arr.sort(function () {<br/>//   return Math.random() - 0.5;<br/>// });</p><p>var n = 0;</p><p>console.time('a');<br/> for ( var j=0; j<arr.length-1; j++ ) {</p><p>/*<br/> * * À mesure que le nombre de grandes boucles augmente, les petites boucles correspondantes doivent être réduites, en réduisant de j fois <br/> * */</p><p>/*<br/> * Chaque fois que la boucle est relativement petite, définissez l'indicateur sur true, indiquant qu'il a été trié<br/>               var flag = true;   <br/></p>for (var i=0; i<arr. longueur-1-j; i++) {<p> var a = arr[i];<br/> var b = arr[i+1];<br/> if (a < b) {<br/> / <br/><br/>/*<br/>                                                                                                arr[i] = b;</p> arr[i+1] = a;<p> }<br/><br/>n++;<br/><br/>}<br/> <br/>/*</p> * Une fois la boucle terminée, regardez la valeur du drapeau, si elle reste vraie, cela signifie que la boucle ci-dessus s'est produite sans échange, indiquant que le tri est OK. Si elle est fausse, cela signifie. qu'il y a eu un échange <p>               *   /</p>                                                                 ;<p> }</p><p>}<br/> console.timeEnd('a');<br/><br/>console.log(n); <br/> console.log(arr);<br/> </p></script>


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn