一、概念

冒泡排序(Bubble Sort):是一种简单的排序算法,可以把一系列的数据按照一定的顺序进行排列显示(从大到小或者从小到大)。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

二、基本原理

1.  比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.  对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应 该会是最大的数。

3.  针对所有的元素重复以上的步骤,除了最后一个。

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

三、流程图

四、动图演示

上官海嵐录制

五、代码实现

数组实现:

从小到大:

<script>
var arr = [4, 1, 2, 5, 3];
for (var i = 0; i <= arr.length - 1; i++) {  // 外层循环管趟数for (var j = 0; j < arr.length - i - 1; j++) { // 内层循环管每一趟的交换次数// 内部交换2个变量的值  前一个和后面一个数组元素相比较if (arr[j] > arr[j + 1]) {  var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}console.log(arr);
</script>

输出结果:

从大到小:

<script>
var arr = [4, 1, 2, 5, 3];
for (var i = 0; i <= arr.length - 1; i++) {  // 外层循环管趟数for (var j = 0; j < arr.length - i - 1; j++) { // 内层循环管每一趟的交换次数// 内部交换2个变量的值  前一个和后面一个数组元素相比较if (arr[j] < arr[j + 1]) {  var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}console.log(arr);
</script>

输出结果:

函数封装:

<script>
function sort(arr) {for (var i = 0; i <= arr.length - 1; i++) {for (var j = 0; j < arr.length - i - 1; j++) {if (arr[j] < arr[j + 1]) {var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr;
}var arr1 = sort([4, 1, 2, 5, 3]);console.log(arr1);</script>

输出结果:

注: 从小到大只需要修改 if  条件

JavaScript 算法——排序算法之冒泡排序相关推荐

  1. JavaScript的排序算法——快速排序

    排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...

  2. javascript常用排序算法总结

    算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...

  3. JavaScript实现排序算法

    排序算法主要用在元素的数组排序,常见的排序算法有冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序等.这些排序算法都可以用JavaScript实现.下面的排序算法都假设是从小到大进行排序,从大 ...

  4. c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)

    下面是未经改进的冒泡排序算法: #include #include int a[10] = {1,4,3,5,23,2,45,6,3,5}; main() { int i,j,mid; int len ...

  5. JavaScript之排序算法

    本文主要介绍三种排序算法,分别是冒泡排序.选择排序和快速排序.为方便测试,本文会随机生成长度为10的数组,数组元素的值在[1,20]之间. 1.冒泡排序 核心思路:每一轮相邻两个数进行比较,选出一个最 ...

  6. c语言冒泡排序算法排序字符串,利用冒泡排序实现一串字符串从小到大的排序...

    实现B/S架构,输入一串字母或数字,将它们按从小到大排序,排序算法在服务端实现. 以下是实现: Test.java import java.io.IOException; import java.io ...

  7. 排序算法--排序算法汇总

    排序算法无疑是学习数据结构中的重点内容,本文将给出排序算法的汇总. 下面是具体的实现: #include<stdio.h> #include<stdlib.h> #includ ...

  8. java 算法 排序算法_Java七种排序算法以及实现

    Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...

  9. 数据结构与算法 / 排序算法(2)

    一.归并排序 1.原理 采用分治思想.将数组分成前后两部分,先将这两部分进行排序,然后再将二者合并即可. 2.原地排序? 不属于原地排序.因为每次合并都需要申请大小为 n 的临时数组用于保存合并之后的 ...

最新文章

  1. Linux Kernel TCP/IP Stack — Socket Layer
  2. GitHub的嵌入式开源项目
  3. php flash上传进度条,PHP_PHP+FLASH实现上传文件进度条相关文件 下载,PHP之所以很难实现上传进度条 - phpStudy...
  4. SpringBoot登录拦截器
  5. 人生的第一个js插件
  6. [教程]Web自动化测试怎么做?Web网页测试全流程解析
  7. 纯CSS实现多行文本溢出显示省略号(兼容不同浏览器)
  8. 大小写字母转换c语言用getchar,用getchar改写大小写.doc
  9. yum报Exiting on user cancel
  10. SeedLab10: Linux Firewall Exploration Lab
  11. 计算机文化基础形考作业,(精华版)国家开放大学电大专科《计算机文化基础》网络课形考任务6作业及答案(2页)-原创力文档...
  12. breezy,dapper,edgy,feisty的含义
  13. CCD视觉应用上有哪些优势
  14. 一种基于柔性压力传感器的机械手驱动系统
  15. 略谈为学之道和未来之大学
  16. 支付宝在线支付接口申请教程
  17. 设计高质量的论文插图
  18. 【以太网通信】RGMII 接口及其时序规范
  19. 操作符的相关知识(二)
  20. Windows Powershell 计划任务

热门文章

  1. BUUCTF-----SoulLike
  2. 计算机科学班会,2020级计算机科学与技术一班心理健康教育主题班会
  3. 基于百度云人脸融合API的python实现视频人像换脸
  4. 常用的js数组去重的方法
  5. 【案例介绍】天津市河西区政府智慧城市大屏可视化决策系统
  6. Python 使用os库函数listdir() 模拟DOS命令dir
  7. 无VPN的win10 pytorch快速安装方法
  8. JVM-13-Class文件结构
  9. 双屏下Pr播放预览区域黑屏问题
  10. asp.net做网页界面有种隔靴挠痒的感觉