首页 > 编程语言 >JavaScript 实现 -- 冒泡排序

JavaScript 实现 -- 冒泡排序

时间:2022-10-22 23:32:00浏览次数:52  
标签:arr 元素 -- JavaScript 冒泡排序 length 数组 排序

冒泡排序

冒泡排序(Bubble Sort)也叫气泡排序、泡沫排序,是一种比较简单的排序算法。

它通过遍历数组,比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置,这样第一次遍历后数组的最大元素就排在了数组的末尾。采用相同的方法再次遍历,直至整个数组都有序为止。

代码实现

理解完冒泡排序的原理,我们再来看看实现代码:

		Array.prototype.bubbleSort = function(){
		    for(let i = 0; i < this.length - 1; i++){
		    	//j < length - 1 - i 内层循环只循环未排序的数组元素
		        for(let j = 0; j < this.length - 1 - i;j++){
		            if(this[j] > this[j+1]){
		            	//交换数组元素
		                [this[j], this[j+1]] = [this[j+1], this[j]];
		            }
		        }
		    }
		} 
        const arr = [6,5,4,3,2,1];
        arr.bubbleSort(); 
        console.log(arr);   

控制台输出: 在这里插入图片描述

冒泡排序过程

在这里插入图片描述

时间复杂度

冒泡排序有两层循环,所以其**时间复杂度为O(n^2)**;

算法稳定性

冒泡排序是稳定的算法;

即在数组中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。

标签:arr,元素,--,JavaScript,冒泡排序,length,数组,排序
From: https://blog.51cto.com/u_15718546/5786214

相关文章

  • JavaScript 实现 -- 选择排序
    选择排序选择排序是一种简单直观的排序算法。原理第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元......
  • JavaScript 实现 -- 希尔排序
    希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”(DiminishingIncrementSort),是插入排序的一种更高效的改进版本。希尔排序实际上就是分组的插入排序,希尔排序以步长......
  • nan踩坑记
    检查数据如果输入的是图片数据,先检查是否有打不开的图片/大小明显异常的图片;检查输入模型的数据是否与所使用的loss函数提供接口中的要求相一致。检查所有除式中的......
  • GitHub Pages 和 Jekyll 笔记
    GitHubPages和Jekyll笔记快速创建(使用默认的Jekyll引擎)1.新建仓库新建一个空仓库,名称为username.github.io,其中username就是你的GitHub账号名称2.增加文......
  • nvue跟随软件
    nvue跟随软件uni.onKeyboardHeightChange(item=>{ //获取系统信息 let_sysInfo=uni.getSystemInfoSync(); let_heightDiff=_sysInfo.screenHeight-_sysInfo......
  • 熟悉编程语言
    熟悉编程语言最受欢迎的编程语言top50这50种编程语言的编程泛型命令式:FORTRAN、BASIC、C++面向过程:C、COBOL、Fortran面向对象:C++、Java、PHP、python、go、Obj......
  • ubuntu2004使用bind9配置dns服务器
    使用bind9可以配置的NDS服务器类型有五种:分别为缓冲服务器、主服务器、从服务器、混合服务器以及私密服务器。这次主要试了下主服务器。1.安装bind9 sudoapt-getins......
  • Python元类详解
    目录PythonMetaClass一、万物皆对象1、简介2、Python对象3、type|object|class3.1关系3.2创建类的第二中方式二、元类1、什么是元类2、调用流程3、函数做元类4......
  • 2022-2023-1 20221419 《计算机基础与程序设计》第8周学习总结
    2022-2023-120221419《计算机基础与程序设计》第8周学习总结作业信息班级:[2022-2023-1-计算机基础与程序设计]https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP......
  • 面向对象
    三大特性封装利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对......