JavaScript 算法——排序算法之冒泡排序
一、概念
冒泡排序(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 算法——排序算法之冒泡排序相关推荐
- JavaScript的排序算法——快速排序
排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...
- javascript常用排序算法总结
算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...
- JavaScript实现排序算法
排序算法主要用在元素的数组排序,常见的排序算法有冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序等.这些排序算法都可以用JavaScript实现.下面的排序算法都假设是从小到大进行排序,从大 ...
- c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)
下面是未经改进的冒泡排序算法: #include #include int a[10] = {1,4,3,5,23,2,45,6,3,5}; main() { int i,j,mid; int len ...
- JavaScript之排序算法
本文主要介绍三种排序算法,分别是冒泡排序.选择排序和快速排序.为方便测试,本文会随机生成长度为10的数组,数组元素的值在[1,20]之间. 1.冒泡排序 核心思路:每一轮相邻两个数进行比较,选出一个最 ...
- c语言冒泡排序算法排序字符串,利用冒泡排序实现一串字符串从小到大的排序...
实现B/S架构,输入一串字母或数字,将它们按从小到大排序,排序算法在服务端实现. 以下是实现: Test.java import java.io.IOException; import java.io ...
- 排序算法--排序算法汇总
排序算法无疑是学习数据结构中的重点内容,本文将给出排序算法的汇总. 下面是具体的实现: #include<stdio.h> #include<stdlib.h> #includ ...
- java 算法 排序算法_Java七种排序算法以及实现
Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...
- 数据结构与算法 / 排序算法(2)
一.归并排序 1.原理 采用分治思想.将数组分成前后两部分,先将这两部分进行排序,然后再将二者合并即可. 2.原地排序? 不属于原地排序.因为每次合并都需要申请大小为 n 的临时数组用于保存合并之后的 ...
最新文章
- Linux Kernel TCP/IP Stack — Socket Layer
- GitHub的嵌入式开源项目
- php flash上传进度条,PHP_PHP+FLASH实现上传文件进度条相关文件 下载,PHP之所以很难实现上传进度条 - phpStudy...
- SpringBoot登录拦截器
- 人生的第一个js插件
- [教程]Web自动化测试怎么做?Web网页测试全流程解析
- 纯CSS实现多行文本溢出显示省略号(兼容不同浏览器)
- 大小写字母转换c语言用getchar,用getchar改写大小写.doc
- yum报Exiting on user cancel
- SeedLab10: Linux Firewall Exploration Lab
- 计算机文化基础形考作业,(精华版)国家开放大学电大专科《计算机文化基础》网络课形考任务6作业及答案(2页)-原创力文档...
- breezy,dapper,edgy,feisty的含义
- CCD视觉应用上有哪些优势
- 一种基于柔性压力传感器的机械手驱动系统
- 略谈为学之道和未来之大学
- 支付宝在线支付接口申请教程
- 设计高质量的论文插图
- 【以太网通信】RGMII 接口及其时序规范
- 操作符的相关知识(二)
- Windows Powershell 计划任务