• 【21天学习挑战赛—经典算法】冒泡排序


    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

    CSDN—21天学习挑战赛—【经典算法】

    学习专栏地址

    经典算法_一头小山猪的博客-CSDN博客

    文章

    一文学懂经典算法系列之:冒泡排序)


    冒泡排序

    • 依次比较相邻的元素,顺序错误就调换位置(根据升降序来判断顺序),
    • 一共遍历元素个数 - 1 次,每次遍历可减少一位元素的遍历

    算法步骤(升序为例)

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。降序则相反,若第一个比第二个小,就调换位置

    对每一对相邻元素作同样的工作,从开始到结尾。做完本次对比后,最后的元素会是最大的数。

    然后又针对所有元素重复以上的步骤,除了最后一个(因为此时最后一个一定是最大数)。

    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    示意图

    实例步骤示意

    arr=[6,1,5,2,4,3]为例子

    第一次 :(对比⑤次)

    • 依次对比
      [1,6,5,2,4,3] 6比1大,调换
      [1,5,6,2,4,3] 6比5大,调换
      [1,5,2,6,4,3] 6比2大,调换
      [1,5,2,4,6,3] 6比4大,调换
      [1,5,2,4,3,6] 6比3大,调换

    第二次 :(对比④次)

    • 本次 无需遍历最后一个数 6 了
      [1,5,2,4,3,6] 1比5小,不调换
      [1,2,5,4,3,6] 5比2大,调换
      [1,2,4,5,3,6] 5比4大,调换
      [1,2,4,3,5,6] 5比3大,调换

    第三次 :(对比③次)

    • 本次 无需遍历最后一个数 6 了,和倒数第二个数了
      [1,2,4,3,5,6] 1比2小,不调换
      [1,2,4,3,5,6] 2比4大,不调换
      [1,2,3,4,5,6] 4比3大,调换

    (虽然 前三位已经是升序了,但依然要对比,因为木有被检验过)

    第四次 :(对比②次)

    同理

    第五次 :(对比①次)

    同理

    JS代码实现

    • 升序为例·
    let arr=[6,1,5,2,4,3]
    function bubbleSort(_arr){
    	//代表循环遍历次数
    	for(let i=0;i<_arr.length-1;i++){
    		//代表每次循环 对比的次数
    		for(let j=0;j<_arr.length-1-i;j++){
    			//将当前值 存起来
    			let temp = _arr[j]
    			//若 前一个数 小于 后一个数 则调换位置
    			if(_arr[j] > _arr[j+1]){
    				_arr[j] = _arr[j+1]
    				_arr[j+1] = temp
    			}
    		}
    	}
    	return _arr
    }
    console.log(bubbleSort(arr))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    【测试】robotframework安装
    Abbexa丨Abbexa动物组织 PCR 试剂盒提取说明书
    PAT 1023 Have Fun with Numbers(高精度乘法)
    编译vtk源码
    CPU架构 -- ARMv7与ARMv8协处理器比较
    数据库概论 - MySQL的简单介绍
    小白跟做江科大32单片机之按键控制LED
    Linux之进程管理
    linux中通配符与正则表达式的区别
    计算机考研操作系统题库
  • 原文地址:https://blog.csdn.net/m0_61486963/article/details/126334711