JavaScript学习之排序
来源:互联网 发布:淘宝狗粮店铺简介文案 编辑:程序博客网 时间:2024/06/05 22:59
数组的排序
1.数组排序
arr1=[4,5,6,2,3,8,1,0,7]; function add(a,b){ return(a-b) } document.write(arr1.sort(add));//从小到大排列。a在js中表示前一个数,b表示后一个数,我理解为若差值为负,则顺序不变,若差值为正,则a与b交换顺序 function jian(a,b){ return(b-a) } document.write("<br />"+arr1.sort(jian));//从大到小排。
sort() 方法用于对数组的元素进行排序。
语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。
注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
输出:
"0,1,2,3,4,5,6,7,8""8,7,6,5,4,3,2,1,0"
2.简单排序
function compare(value1,value2){ return value1>value2 ? 1 : -1;//如果value1>value2,则为1 } var arr = ['34', '45', '23', '56', '88', '21', '16', '55']; alert(arr.sort(compare).tostring());
此处sort( )接受一个compare函数作为参数,compare可以比较任意两个实数的大小
输出:
"16,21,23,34,45,55,56,88"
3.冒泡排序
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
var arr=[12,5,2,3,8,5,6,1,0];//document.write(arr);var len=arr.length;var tmp=0;function bubbleSort(arr){ //i循环控制循环周期数,j循环控制项与项之间的排序比较,每循环一个周期都是将最大的一个数放在了末尾 for(i=0;i<len;i++){ for(j=0;j<len-i;j++){ if(arr[j]>arr[j+1]){ tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp;//交换数值 } } } return arr;} document.write("<br/>"+bubbleSort(arr));//输出结果
输出:
"0,1,2,3,5,5,6,8,12"
阅读全文
0 0
- JavaScript学习之排序
- javascript 学习笔记之表格排序
- JavaScript排序之归并排序
- javascript学习之数组(13)—— 数组 排序
- JavaScript之插值法排序
- JavaScript之二分法排序
- JavaScript之数组排序
- javascript之快速排序
- javascript之排序方法
- 【JavaScript 学习--02】--排序问题
- javascript之冒泡排序算法
- JavaScript之冒泡法排序
- 堆排序之JavaScript实现
- 快速排序之JavaScript实现
- javascript之对象数组排序
- JavaScript数据结构之 堆排序
- JavaScript算法之归并排序
- JavaScript排序算法之插入排序
- LinkedList图解--转载
- java中常用包的简单介绍
- PS-Lite源码分析
- docker镜像下载加速
- Top k
- JavaScript学习之排序
- web页面如何实现点击按钮进行手机拨号?
- Bash scripts-I
- CSAPP笔记
- 主题七 最终的胜利----41.C语言程序员简历编写及面试技巧
- 简述MVC框架模式以及在你(Android)项目中的应用
- 小狗路程问题
- 为RecyclerView添加item的点击事件(个人备忘录)
- 自己写程序利用lenet模型识别手写数字