冒泡排序是一个异常常见的排序算法,对于一个数组,每趟排序时依次对照两个相邻的数,若是他们的顺序错误就交流两数位置。以是,没趟排序都市排好一个数字,下一轮排序就可以少对照一个数字,直到只剩下一个数字,就所有排序好了。
举个例子,假设最终需要的效果是从小到大排列,对于数组:
[3, 5, 2, 6, 1, 7, 4]
[3, 5, 2, 6, 1, 7, 4] // 对照历程: // 1. 对照 3 和 5,发现顺序准确,则稳固 [3, 5, 2, 6, 1, 7, 4] // 2. 对照 5 和 2,发现顺序错误,交流位置 [3, 2, 5, 6, 1, 7, 4] // 3. 对照 5 和 6,发现顺序准确,稳固 [3, 2, 5, 6, 1, 7, 4] // 4. 对照 6 和 1,发现顺序错误,交流位置 [3, 2, 5, 1, 6, 7, 4] // 5. 对照 6 和 7,发现顺序准确,稳固 [3, 2, 5, 1, 6, 7, 4] // 5. 对照 7 和 4,发现顺序错误,交流位置 [3, 2, 5, 1, 6, 4, 7]
排序历程中,所有相邻数字对都对照了一遍,对照的历程中,实质上是对照的相邻位置,而不管位置上的数字是否在上一次对照中交流了位置,只管一个一个位置的对照下去,数字顺序错误就把数字位置交流。经由这趟排序,发现更大的数字 7 已经排到了最后一个位置,以是下一趟排序就不需要再对照最后一个位置的数字了。
// 经由之一趟排序后的数组 [3, 2, 5, 1, 6, 4, 7] // 对照历程: // 1. 对照 3 和 2,发现顺序错误,交流位置 [2, 3, 5, 1, 6, 4, 7] // 2. 对照 3 和 5,发现顺序准确,稳固 [2, 3, 5, 1, 6, 4, 7] // 3. 对照 5 和 1,发现顺序错误,交流位置 [2, 3, 1, 5, 6, 4, 7] // 4. 对照 5 和 6,发现顺序准确,稳固 [2, 3, 1, 5, 6, 4, 7] // 5. 对照 6 和 4,发现顺序错误,交流位置 [2, 3, 1, 5, 4, 6, 7] // 最后一个数字不用对照
经由第二趟排序后,数字 6 也排到了准确的位置。第三趟排序时,最后两位数字都不用对照了。
每一趟排序,都市把剩余数字中更大的排到最后面。后面的排序历程就不再剖析了。清晰了排序历程,写代码来排序就很简朴了,代码如下:
function bubbleSort(arr) { var arr = arr.slice(0); // 保证排序后原数组稳固 var len = arr.length; var tmp; // 只需要举行 len - 1 趟排序 // 由于只剩下一个数字时不用再对照了 for (var i = 0; i < len - 1; ++i) { // 每一趟都市排序好一个数字 // 以是每趟只需排 len - i 个数字 for (var j = 1; j < len - i; ++j) { // 若是右边的数比左边的小 // 就交流位置 if (arr[j] < arr[j-1]) { tmp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = tmp; } } // 这里可以打印出每趟排序的效果 // 以便考察排序历程 // console.log(arr); } return arr; }
各种颜色的射线交错,简直是目不暇接。从统计数据上看,中国是最大的攻击源,这从地图上也可以很明显地看到,原来第二名是美国,在半小时后变成了土耳其,西班牙尾随其后。而美国则成为了最大的被攻击源,后面紧跟着...
名字叫做友盟指数,通过在开发者工具中添加的统计工具, 统计移动装备(手机、PAD)的使用情形,好比操作系统、手机型号、都会、逐日使用时间等。 从数据上看,是很精致的,看样子数据是靠谱的。 随便点...
从飞聊的宣传文章内容中,以及结合当前产品的基本形态,可以看出飞聊想要做一款去中心化的社交聊天产品,但明显的是飞聊目前正处于开荒期,距离实现目标还有很长一段时间的路要走。 多闪似乎凉了,那我们来简单聊一...
本文导读目录: 1、春运期间,广州南站针对的士进行非现场执法 2、正在运行的客运公司春运期间执行吗? 3、威海文登:整治非法营运,保障春运安全 4、浅谈如何治理治理高速公路客车违法上下客...
《小娘惹》是一部以女士为主导的电视连续剧,可是剧里的女性角色的运势都很凄惨,女一号月娘的妈妈菊香的一生都会吃苦,最终总算直到了恋人,却不曾在一起白头偕老。那麼小娘惹菊香的结果是啥 菊香是怎死的呢?下...
微信APP版本为v7.0.19,微信登录收不到验证码的原因是: 1、手机上面的网络状态错误。如果手机收到的信号比较弱,将手机带到信号较好的地方,重新获取短信验证码。 2、没有输入...