一、图解排序过程



注意:比较次数和交换次数之所以不一致,是因为:比较了并不一定就需要交换两个数字的位置,比如比较 1 和 2两个数字,由于 后者本身就比前者大,所以不需要交换两者的位置。

二、代码实现

三、完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><script>// 创建列表类function ArrayList() {// 属性this.array = []// 方法// 将数据可以插入到数组中的方法ArrayList.prototype.insert = function (item) {this.array.push(item)}ArrayList.prototype.toString = function () {return this.array.join('-')}// 交换两个位置的数据ArrayList.prototype.swap = function (m, n) {var temp = this.array[m]this.array[m] = this.array[n]this.array[n] = temp}// 实现排序算法// 冒泡排序ArrayList.prototype.bubbleSort = function () {// 1.获取数组的长度var length = this.array.length// 2.反向循环,因此次数越来越少for (var j = length - 1; j >= 0; j--) {// 第一次进来:  i = 0, 比较 0 和 1 位置的两个数据,如果0位置大于 1位置的数据 交换两个的位置// 最后一次进来:i = length - 2, 比较length - 2 和 length - 1 的两个数据// 3.根据i的次数,比较到i的位置for (var i = 0; i < j; i++) {if (this.array[i] > this.array[i + 1]) {// 4.如果 i 位置比 i+1 位置的数据大,就交换位置// 前一个数字 > 后一个数字, 两者交换位置this.swap(i, i + 1)}}}}// 选择排序// 插入排序// 希尔排序// 快速排序}// 测试var list = new ArrayList()// 插入元素list.insert(66)list.insert(88)list.insert(12)list.insert(87)list.insert(100)list.insert(5)list.insert(566)list.insert(23)alert(list)// 验证冒泡排序list.bubbleSort()alert(list)
</script>
</body>
</html>

JS数据结构与算法——冒泡排序(把大的数字依次往后放)相关推荐

  1. 数据结构与算法:十大排序算法之冒泡排序

    数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...

  2. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  3. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  4. 数据结构与算法:十大排序算法之归并排序

    数据结构与算法:十大排序算法之归并排序 package TopTenSortingAlgorithms;/*** 归并排序:Java** @author skywang* @date 2014/03/ ...

  5. 数据结构与算法:十大排序算法之插入排序

    数据结构与算法:十大排序算法之插入排序 package TopTenSortingAlgorithms;import java.util.Arrays; import java.util.Scanne ...

  6. 数据结构与算法:十大排序算法之堆排序

    数据结构与算法:十大排序算法之堆排序 堆排序可以说是选择排序的优化 package TopTenSortingAlgorithms;import java.util.Arrays; import ja ...

  7. 数据结构与算法笔记 —— 十大经典排序及算法的稳定性

    一.十大经典排序算法 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全 ...

  8. 数据结构与算法--经典10大排序算法(动图演示)【建议收藏】

    十大经典排序算法总结(动图演示) 算法分类 十大常见排序算法可分为两大类: 比较排序算法:通过比较来决定元素的位置,由于时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序 非比较类型排 ...

  9. es6 数组排序_重读《学习JS数据结构与算法-第三版》- 第3章 数组 二

    定场诗 守法朝朝忧闷,强梁夜夜欢歌:损人利己骑马骡,正值公平挨饿:修桥补路瞎眼,杀人放火儿多:我到西天问我佛,佛说:我也没辙! 前言 读<学习JavaScript数据结构与算法>- 第3章 ...

最新文章

  1. 上传图片,要求图片200100象素,大小小于2M
  2. Nodejs 路由封装 封装一个类似 express 的路由
  3. UI组件-UIPickerView
  4. Eclipse中如何更改工作空间(之前一直不知道,几天终于知道了!)。
  5. python+tkinter出现错误
  6. bool型数组python_Python bool()
  7. Maven的Snapshot版本与Release版本
  8. Android GIS开发系列-- 入门季(15) 网络图层加载
  9. Tomcat Session管理分析
  10. 走,去出海,一起“Copy to World” | 36氪出海行业报告
  11. 【转】[DirectShow] 033 - Using Windowed Mode
  12. 解决Linux MySQL报错ERROR 2002 (HY000)
  13. python的中文社区
  14. 本科计算机 在职研究生想读英语,想读在职研究生但是英语成绩不好怎么办?...
  15. 手把手教你如何在AWS EC2 启用 IPv6
  16. golang直接调用ffmpeg预编译类库(windows)
  17. MATLAB系列笔记:三维绘图(一)
  18. 计算机主板现状及发展趋势论文,2020年计算机主板发展趋势分析 2020-2026年全球与中国计算机主板市场深度调研与发展趋势分析...
  19. Mysql、Oracle、DM、Tbase数据库差异性
  20. mysql 获取当前日期 所在周的周一和周日

热门文章

  1. (严蔚敏版)数组的顺序存储表示和实现代码
  2. python中格式化字符串
  3. django2.x报错No module named 'django.core.urlresolvers'
  4. GitHub+Hexo搭建自己的Blog之-本地环境部署01
  5. Python基础总结之常用内置方法总结
  6. asp.net matlab,ASP.NET与MATLAB混合编译以及数据传递【更新中】
  7. smtplib python教程_Python使用poplib模块和smtplib模块收发电子邮件的教程
  8. CentOS6.5安装ElasticSearch6.2.3
  9. 第七章|7.3并发编程|协程
  10. Raspbian 中国软件源