3 4 5 Titel 6 7 8 9 1"/> 3 4 5 Titel 6 7 8 9 1">

Heim >Web-Frontend >js-Tutorial >So implementieren Sie die Blasensortierung

So implementieren Sie die Blasensortierung

巴扎黑
巴扎黑Original
2017-06-26 15:15:411239Durchsuche
 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>





;
<script></p>// var arr = [3,2,4,1,5 ];<p>// var arr = [5,4,3,1,2];<br><br>var arr = [];<br> for (var i=0; i<30000; i++) {</p> arr.unshift(i);<p> }<br/> arr[29999] = 1 ;<br/> arr[29998] = 0;<br/><br/>// arr.sort(function () {<br/>//  return Math.random() - 0.5;</p>// });<p><br/>var n = 0;<br/></p>console.time('a');<p> for ( var j=0; j<arr.length-1; j++ ) {</p><p>/*<br/> * * Mit zunehmender Anzahl großer Schleifen sollten die entsprechenden kleinen Schleifen reduziert werden um j mal </p> * */<p><br/>/*<br/> * Jedes Mal, wenn die Schleife relativ klein ist, setzen Sie das Flag auf true, um anzuzeigen, dass die Sortierung in Ordnung ist</p>               var flag = true;   <p><br/>for (var i=0; i<arr.length-1-j; i++) {<br/> var a = arr[i];<br/> var b = arr[i+1];</p> if (a < b) {<p> / <br/><br/>/*<br/>                                                                         arr[i] = b;<br/> arr[i+1] = a;<br/> }<br/></p>n++;<p><br/>}<br/><br/>/*<br/> * Nachdem die Schleife abgeschlossen ist, schauen Sie sich den Flag-Wert an, ob er wahr bleibt, Dies bedeutet, dass die obige Schleife ohne Austausch aufgetreten ist, was darauf hinweist, dass die Sortierung in Ordnung ist. Wenn sie falsch ist, bedeutet dies, dass ein Austausch stattgefunden hat. <br/>                   ;<br/> }</p><p>}</p> console.timeEnd('a');<p></p>console.log(n);<p> console.log(arr);<br/> <br/></script>
< /body>

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Blasensortierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn