如何实现冒泡排序
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('a');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('a');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('a');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('a');42 43 console.log(n);44 console.log(arr);45 46 </script>47 </body>48 </html>
<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/> * 随着大的循环的次数的增加,对应的小的循环就应该减少,减少j次<br/> * */</p><p>/*<br/> * 每次比较小的循环的时候,设置flag为真,表示已经排序好了,假设排序是ok的<br/> * */<br/> var flag = true;</p><p>for (var i=0; i<arr.length-1-j; i++) {<br/> var a = arr[i];<br/> var b = arr[i+1];<br/> if (a < b) {<br/> /*<br/> * 如果比较过程中走了if条件,那么就说明比较未完成,还需要下次再比较,否则就是交换位置没有发生过,表示数据已经排序好了<br/> * */</p><p>/*<br/> * 只要走了if,表示有交换,就把flag设置false<br/> * */<br/> flag = false;<br/> arr[i] = b;<br/> arr[i+1] = a;<br/> }</p><p>n++;</p><p>}</p><p>/*<br/> * 循环完成以后,看下flag的值,如果还保持true,则说明上面循环是没有交换的情况发生的,表示排序ok了,如果为false就表示有过交换<br/> * */<br/> if (flag) {<br/> break;<br/> }</p><p>}<br/> console.timeEnd('a');</p><p>console.log(n);<br/> console.log(arr);</p><p></script>
以上是如何实现冒泡排序的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文将介绍如何在Windows11/10中根据拍摄日期对图片进行排序,同时探讨如果Windows未按日期排序图片应该如何处理。在Windows系统中,合理整理照片对于方便查找图像文件至关重要。用户可以根据不同的排序方式(如日期、大小和名称)来管理包含照片的文件夹。此外,还可以根据需要设置升序或降序排列,以便更灵活地组织文件。如何在Windows11/10中按拍摄日期对照片进行排序要按在Windows中拍摄的日期对照片进行排序,请执行以下步骤:打开图片、桌面或放置照片的任何文件夹在功能区菜单中,单

华为手机如何实现双微信登录?随着社交媒体的兴起,微信已经成为人们日常生活中不可或缺的沟通工具之一。然而,许多人可能会遇到一个问题:在同一部手机上同时登录多个微信账号。对于华为手机用户来说,实现双微信登录并不困难,本文将介绍华为手机如何实现双微信登录的方法。首先,华为手机自带的EMUI系统提供了一个很便利的功能——应用双开。通过应用双开功能,用户可以在手机上同

编程语言PHP是一种用于Web开发的强大工具,能够支持多种不同的编程逻辑和算法。其中,实现斐波那契数列是一个常见且经典的编程问题。在这篇文章中,将介绍如何使用PHP编程语言来实现斐波那契数列的方法,并附上具体的代码示例。斐波那契数列是一个数学上的序列,其定义如下:数列的第一个和第二个元素为1,从第三个元素开始,每个元素的值等于前两个元素的和。数列的前几个元

如何在华为手机上实现微信分身功能随着社交软件的普及和人们对隐私安全的日益重视,微信分身功能逐渐成为人们关注的焦点。微信分身功能可以帮助用户在同一台手机上同时登录多个微信账号,方便管理和使用。在华为手机上实现微信分身功能并不困难,只需要按照以下步骤操作即可。第一步:确保手机系统版本和微信版本符合要求首先,确保你的华为手机系统版本已更新到最新版本,以及微信App

在我们的工作中,经常会用到wps软件,wps软件处理数据的方式方法是非常多的,而且函数功能也是非常强大的,我们经常用函数来求平均值,求汇总等,可以说只要是统计数据能用的方法,wps软件库里都已经为大家准备好了,下面我们要介绍的是wps怎么排序成绩高低的操作步骤,看完以后大家可以借鉴一下经验。1、首先打开需要排名的表格。如下图所示。 2、然后输入公式=rank(B2,B2:B5,0),一定要输入0。如下图所示。 3、输入完公式以后,按下电脑键盘上的F4键,这步操作是为了让相对引用变为绝对引用。

PHP游戏需求实现指南随着互联网的普及和发展,网页游戏的市场也越来越火爆。许多开发者希望利用PHP语言来开发自己的网页游戏,而实现游戏需求是其中一个关键步骤。本文将介绍如何利用PHP语言来实现常见的游戏需求,并提供具体的代码示例。1.创建游戏角色在网页游戏中,游戏角色是非常重要的元素。我们需要定义游戏角色的属性,比如姓名、等级、经验值等,并提供方法来操作这些

在当今的软件开发领域中,Golang(Go语言)作为一种高效、简洁、并发性强的编程语言,越来越受到开发者的青睐。其丰富的标准库和高效的并发特性使它成为游戏开发领域的一个备受关注的选择。本文将探讨如何利用Golang来实现游戏开发,并通过具体的代码示例来展示其强大的可能性。1.Golang在游戏开发中的优势作为一种静态类型语言,Golang在构建大型游戏系统

在Golang中实现精确除法运算是一个常见的需求,特别是在涉及金融计算或其它需要高精度计算的场景中。Golang的内置的除法运算符“/”是针对浮点数计算的,并且有时会出现精度丢失的问题。为了解决这个问题,我们可以借助第三方库或自定义函数来实现精确除法运算。一种常见的方法是使用math/big包中的Rat类型,它提供了分数的表示形式,可以用来实现精确的除法运算
