JavaScript实现冒泡排序
admin
2024-03-01 00:10:02
0

 

  • 先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置

  • 数组遍历一遍以后,那么最后一个数字就是最大的那个了

  • 然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置

  • 以此类推,最后就会按照顺序把数组排好了

我们先来准备一个乱序的数组

var arr = [3, 1, 5, 6, 4, 9, 7, 2, 8]

 

  • 接下来我们就会用代码让数组排序

 先不着急循环,先来看数组里面内容换个位置

// 假定我现在要让数组中的第 0 项和第 1 项换个位置
// 需要借助第三个变量
var tmp = arr[0]
arr[0] = arr[1]
arr[1] = tmp

 

 第一次遍历数组,把最大的放到最后面去

for (var i = 0; i < arr.length; i++) {// 判断,如果数组中的当前一个比后一个大,那么两个交换一下位置if (arr[i] > arr[i + 1]) {var tmp = arr[i]arr[i] = arr[i + 1]arr[i + 1] = tmp}
}// 遍历完毕以后,数组就会变成 [3, 1, 5, 6, 4, 7, 2, 8, 9]

 

  1. 第一次结束以后,数组中的最后一个,就会是最大的那个数字

  2. 然后我们把上面的这段代码执行多次。数组有多少项就执行多少次

 按照数组的长度来遍历多少次

 

for (var j = 0; j < arr.length; j++) {for (var i = 0; i < arr.length; i++) {// 判断,如果数组中的当前一个比后一个大,那么两个交换一下位置if (arr[i] > arr[i + 1]) {var tmp = arr[i]arr[i] = arr[i + 1]arr[i + 1] = tmp}}
}// 结束以后,数组就排序好了

 给一些优化

  • 想象一个问题,假设数组长度是 9,第八次排完以后

  • 后面八个数字已经按照顺序排列好了,剩下的那个最小的一定是在最前面

  • 那么第九次就已经没有意义了,因为最小的已经在最前面了,不会再有任何换位置出现了

for (var j = 0; j < arr.length - 1; j++) {for (var i = 0; i < arr.length; i++) {// 判断,如果数组中的当前一个比后一个大,那么两个交换一下位置if (arr[i] > arr[i + 1]) {var tmp = arr[i]arr[i] = arr[i + 1]arr[i + 1] = tmp}}
}

 

  • 第二个问题,第一次的时候,已经把最大的数字放在最后面了

  • 那么第二次的时候,其实倒数第二个和最后一个就不用比了

  • 因为我们就是要把倒数第二大的放在倒数第二的位置,即使比较了,也不会换位置

  • 第三次就要倒数第三个数字就不用再和后两个比较了

  • 以此类推,那么其实每次遍历的时候,就遍历 当前次数 - 1

    for (var j = 0; j < arr.length - 1; j++) {for (var i = 0; i < arr.length - 1 - j; i++) {// 判断,如果数组中的当前一个比后一个大,那么两个交换一下位置if (arr[i] > arr[i + 1]) {var tmp = arr[i]arr[i] = arr[i + 1]arr[i + 1] = tmp}}
    }

  • 至此,一个冒泡排序就完成了

上一篇:集合的总结

下一篇:Redis 列表( List )

相关内容

热门资讯

养胃如养命,胃不好的建议多吃这... 胃,作为人体消化系统的核心器官,其健康状况直接关乎我们的整体生活质量。俗话说“养胃如养命”,呵护胃部...
孩子最爱的8道菜,建议多做着吃... 在孩子的成长过程中,饮食对他们的大脑发育和学习能力起着至关重要的作用。今天就为各位家长分享 8 道孩...
晚上想喝点小酒,推荐8道下酒菜... 夜幕降临,城市的喧嚣渐渐沉淀,此时,若能小酌几杯,再佐以几道美味的下酒菜,那无疑是一天中最惬意的时光...
“羊都不吃”的羽衣甘蓝爆火:当... 羽衣甘蓝正带着“健康”的铭牌成为食品市场新贵。 两年前批发价0.8元/斤无人问津,如今3.5元/斤还...
北京6天5晚美食推荐,北京六日... 北京是一座文化多元的城市,融合了汉族、满族、蒙古族等多个民族的文化特色。在这里,你可以欣赏到京剧、昆...
新疆带娃9日游纯玩攻略,乌鲁木... 宝子们,新疆一直都是旅游界的“顶流”,它那广袤的土地上有着数不清的美景。乌鲁木齐作为新疆的首府,更是...
一家三口游广西五天多少钱,桂林... 我和爱人一直都对广西桂林的山水心驰神往。桂林那如诗如画的山水画卷,仿佛是大自然精心雕琢的杰作,漓江的...
广西六天五晚自由行攻略,桂林结... 一直听闻“桂林山水甲天下”,那如诗如画的山水画卷,像一块巨大的磁石,深深吸引着我。广西桂林,有奇峰罗...
广西五天四夜旅游攻略,桂林5日... 家,永远是我们心中最温暖的港湾,而陪伴家人一起出游,则是增进亲情、创造美好回忆的绝佳方式。我一直盼着...
明日立秋,记得吃“入秋4宝”,... 1宝饺子!(立秋羊肉饺) 2宝面!(立秋面) 3宝螃蟹!(葱姜黄油蟹) ...
今日养生方 | 暑热缠身?清代... 炎炎夏日,高温肆虐,稍不留意就易中暑,出现身热口渴等不适。清代名医吴鞠通创制的清络饮,以芳香轻药组方...
盛夏时节,莲韵正芳华 盛夏时节... 盛夏时节,莲韵正芳华2025-08-06 07:20来源:开屏新闻盛夏时节,昆明市晋宁区南滇池国家湿...
“工业+旅游”潮趣满满(文旅新... 来源:人民日报海外版北京首钢园夜景充满科幻色彩。资料图片参观者在北京小米汽车工厂的体验中心了解SU7...
原创 婆... ##标题:婆婆做的荞麦蒸饺,实在太好吃了,一口气吃了20个,营养美味 XXXXXX年XX月XX日X...
原创 明... 明日立秋,抢秋膘吃饺子韭菜芹菜靠边站,用它鲜美多汁味道香,全家都爱吃! 明日就是一年一度的立秋节气,...
原创 姜... ##标题:姜汁热窝鸡,听名字就超好吃! XXXXXX年XX月XX日XX:XX发布于XX 作为一名...
把门票做成“体验股”,揭秘乌镇... (来源:白狐财经) 转自:白狐财经 作者 | 张一弛 古镇旅游,真的已经走到末路了吗? 青砖、绿瓦...
西安当地导游可靠吗?假期去陕西... 暑假是旅行的绝佳时机,而西安作为中国历史文化名城,一直是我的旅行首选。这里不仅有着悠久的历史和丰富的...