冒泡排序

冒泡排序是让数组中的两个相邻数字进行比较,数组中较大的值向下沉,值小的上浮,就类似于水中的气泡,较大的下沉,较小的上升,慢慢冒出来。简单的说就是数值大的会慢慢往前排,数据值小的会慢慢向后排,最终实现由小到达排列,最小的排在最前,最大的排到最后。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
for(var i=0;i<arr.length;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;}}
}
console.log(arr);/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]*/

sort()

sort() 方法用于对数组的元素进行排序,并返回数组。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
console.log(arr.sort());
/*
[ 91, 76, 96, 23, 93 ]
[ 23, 76, 91, 93, 96 ]*/

注意:sort() 方法的默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。

reverse()

reverse() 方法用来反转数组中的元素,可以使用它以降序对数组进行排序。

var arr = [ 91, 76, 96, 23, 93 ];
console.log(arr);
arr.sort();
arr.reverse();
console.log(arr);
/*
[ 91, 76, 96, 23, 93 ]
[ 96, 93, 91, 76, 23 ]*/

比较函数

比较函数用来比较两个值的大小,然后返回一个用于说明这两个值的相对顺序的数字。

function(a, b){return a-b;
}

比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
  • 若 a 等于 b,即 a - b 等于零,则返回 0,数组不再排序。
  • 若 a 大于 b,即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。
var arr = [ 91, 76, 96, 23, 93 ];
arr.sort(function(a, b){return a - b;  //升序
});
console.log(arr);
//[ 23, 76, 91, 93, 96 ]
arr.sort(function(a, b){return b - a;  //降序
});
console.log(arr);
//[ 96, 93, 91, 76, 23 ]

JavaScript 数组经常会包含对象,即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序,解决方法是通过比较函数来对比属性值。

var cars = [{type:"Volvo", year:2016},{type:"Saab", year:2001},{type:"BMW", year:2010}
];
cars.sort(function(a, b){return a.year - b.year;
});
console.log(cars);
/*
[{ type: 'Saab', year: 2001 },{ type: 'BMW', year: 2010 },{ type: 'Volvo', year: 2016 }
]*/

JavaScript算法(实例三)数组排序--冒泡排序 / sort() / reverse() / 比较函数相关推荐

  1. JAVA常见算法题(三十一)---冒泡排序

    package com.jege.spring.boot.hello.world;/*** java算法之冒泡排序<br>* 将数组按照从大到小的顺序排列<br>* * * @ ...

  2. javascript算法汇总(持续更新中)

    1. 线性查找 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset ...

  3. python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码

    利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...

  4. 冒泡排序算法实例详解

    冒泡排序算法实例详解 1.复杂度与稳定性 算法时间复杂度 最坏情况:O(n^2) 最好情况:O(n) 平均情况:O(n^2) 空间复杂度:S(n)=O(1) 稳定性:稳定排序 2.过程介绍(以顺序为例 ...

  5. 【排序算法系列 1】冒泡排序(Bubble Sort)

    [排序算法系列 1]冒泡排序 [排序算法系列 2]选择排序 [排序算法系列 3] 插入排序 [排序算法系列 4] 高级排序--希尔排序(插入排序的改进) [排序算法系列 5] 高级排序--归并排序 [ ...

  6. JavaScript算法相关

    1. 排序 1.1.冒泡排序 每一轮比较,从左至右交换相邻,每轮结束,最后一个为最大 下一轮,需要比较的个数 - 1 j < len - i (范围动态缩小) 共 len - 1 轮比较 fun ...

  7. c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...

  8. PHP数据结构算法实例

    来源:http://blog.sina.com.cn/s/blog_788fd8560100plj3.html PHP已经面世十几年了,数据结构更是数倍于PHP生龄,但很不理解的是语言界竟无一人出版使 ...

  9. JavaScript算法与数据结构——字典详解

    字典是一种以键-值对的形式存储数据的数据结构,接下来我们将使用JavaScript实现字典数据结构. 1.定义字典类 由于比较字典数据结构比较简单,就直接上代码好了. class Dictionary ...

最新文章

  1. windows server 守护进程nssm
  2. step4 . day5 进程与进程的创建
  3. 【转】测试人员的思想理念和工作方法
  4. junit rule_使用@Rule在JUnit中测试文件和目录
  5. python3编程入门先学什么_自学编程入门,先学什么语言好?
  6. 树形动规_(战略游戏)
  7. Kubernetes(K8s) 1.14.3常用操作命令
  8. javascript 正则表达式学习
  9. python实现数据库查询导出到excel案例
  10. Android 权限大全
  11. 记录一下学习EFCore中的基础知识
  12. 服务器被入侵了,怎么防范服务器被黑客入侵情况
  13. 2017年总结,2018新开始
  14. html 列表 表格 form表单 文本域 label
  15. 逻辑函数(表示方法、形式转换、化简、最小项、最大项)
  16. 20P44 Premiere预设600个摄像机动画信号干扰调色视觉特效pr模板
  17. android禁止安装第三方app,Android6.0 禁止安装未知来源应用
  18. Nginx 优化及原理
  19. p牛java安全漫谈学习笔记(2)_反序列化与urldns链(基础)
  20. AFNetwork 2.0在请求时报错code=-1016 和 3840

热门文章

  1. Centos7 防火墙开启端口
  2. PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...
  3. mysql配置命令_MySQL基本配置命令总结
  4. JBox2D学习 - 小球碰撞实例 .
  5. create-react-app 脚手架工具完善自己所需要的入口文件
  6. P4172 [WC2006]水管局长 LCT维护最小生成树
  7. MySQL的binlog及关闭方法
  8. 基于http的netty demo
  9. 线性表的链式存储集成
  10. muduo源代码分析--Reactor模式在muduo中的使用