前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >冒泡排序

冒泡排序

作者头像
Tz一号
发布2022-05-11 10:44:44
2670
发布2022-05-11 10:44:44
举报
文章被收录于专栏:Tz一号Tz一号

所谓的冒泡排序,其实指的是对数组中的数据进行排序,按照从小到大的顺序来进行排列.

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

代码语言:javascript
复制
生活原理:假设小明是最矮的;然后通过比较,发现二狗要比小明矮,就和小明换位置,两两比较,通过第一次比较可以找出二狗是最矮的人,
然后假设队伍的第二个人是最矮的,让他和剩下的人比较身高,依次找出其他人的位置。

js思路:假想数组中的任意一个值是最小;然后通过比较两两比较,找出索引值,换位,然后赋值。
代码语言:javascript
复制
// 数组的冒泡排序
var arr = [10,3,4,2,32,43,100,99];

maoPao(arr);

// 希望对上面的数组进行冒泡排序的处理
// 将两个值进行对比

function maoPao(arr) {
    var flag = 1; // 用来标记某一次排序是否发生交换

    for(var i =0;i<arr.length-1;i++) {
        flag = 0; // 设置为0表示没有发生交换
      

   
        for (var j =0;j < arr.length-i-1;j++){
代码语言:javascript
复制
//arr.length - i - 1相当于 arr.length - (i + 1 ),
代码语言:javascript
复制
/**为什么设置这个命令?因为第一次循环数组的最后一位已经确定了,第二次循环数组的倒数第二位也确定,以此类推.*/
代码语言:javascript
复制
//var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp;相当于把数组[j]数据赋值给变量temp,然后把等于数组[j+1]的值赋值给数组[j],
//再把temp值赋值给数组[j+1],此时数组[j]和数组[j+1]的值已经发生了改变
代码语言:javascript
复制
if (arr[j] > arr[j+1]) { // 进行交换 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = 1; // 设置为1 表示本次循环发生了交换 } } console.log(arr); // 每次都输出一下数组 if(flag === 0) break; // 如果没有发生改变,则停止循环 } }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档