重温前端基础之-js排序算法
javascript数组常用的方法:
push():返回值,数组新的长度
pop():返回值,被删除的数组末尾元素
shift():返回值,被删除的数组首部元素
unshift():返回值,数组新的长度
concat():返回值,拼接后新的数组
slice():返回值,截取的新的数组
splice():返回值,被插入/删除/替换元素的数组
map():返回新的数组
filter():返回被筛选后的新的数组
reduce():返回新的数组
sort():返回排序后的新的数组
与数组有关的两个:
join():将数组转化为用特殊符号分割的字符串
reverse():将数组顺序逆转
不常用的:
every()
some()
//1、使用sort方法进行排序的算法如下: //字符串排序: var arr = [George,John,Thomas,James,Adrew,Martin]; arr.sort(); //数字排序: var arr = [4,3,7,10,15,30,22]; arr.sort(function(a,b){
return a-b>0;
}) //2、冒泡排序: function bubbbleSort(arr){ if(!Array.isArray(arr)){ return new Error("arr不是数组"); } if(arr.length<=1){ return arr; 31 } var temp,i,j; for(i=0;i<arr.length;i++){ 37 for(j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1];
arr[j+1]=temp; } } 51 }
return arr; } //改进版冒泡排序:(添加一个标志位,可以让已经排过序的不用重复遍历) function bubbbleSort(arr){ if(!Array.isArray(arr)){ return new Error("arr不是数组"); } if(arr.length<=1){ return arr; } var pos,temp,j;
var i = arr.length-1;//初始时,最后位置保持不变 while(i>0){
76 pos = 0;//每一轮循环,位置从0开始。
for(j=0;j<i;j++){
if(arr[j]>arr[j+1]){
pos = j;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp; } } i=pos;
}
return arr; } //3、快速排序(原理是,1、找一个基值,一般是数组的中间数,2、然后将大于中间值的数放右边,小于中间值的数放左边,3、然后递归第二步,4返回拼接好排序后的数组) function quickSort(arr){
if(!Array.isArray(arr)){
return new Error("arr不是数组");
} if(arr.length<=1){
return arr;
}
var i,left = [],right = [];
var midIndex = Math.floor(arr.length/2);
var midItem = arr.splice(midIndex,1)[0];//此处要把中间值从数组中去掉。
for(i=0;i<arr.length;i++){
if(arr[i]<midItem){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
117 return quickSort(left).concat([midItem],quickSort(right));
}
参考文章:http://web.jobbole.com/87968/
重温前端基础之-js排序算法的更多相关文章
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- js排序算法汇总
JS家的排序算法 十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- 常用的 JS 排序算法整理
关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...
- 自己写的JS排序算法
这学期刚刚学完数据结构,之前就自己写了一点东西,现在整理一下. <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- js排序算法总结—冒泡,快速,选择,插入,希尔,归并
相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...
- js排序算法总结——冒泡,快速,选择,插入,希尔,归并
相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...
- 结构-行为-样式-Js排序算法之 直接插入排序
最新因工作原因需要接触到算法,之前学习C++的时候有接触过算法,Javascript中实现算法其实也是大同小异.下面我讲下第一个实现的排序算法--直接插入排序.基本实现思路:假定一个数组中前n(n&g ...
- js排序算法总结
快速排序 大致分三步: 1.找基准(一般是以中间项为基准) 2.遍历数组,小于基准的放在left,大于基准的放在right 3.递归 快速排序的平均时间复杂度是O(nlogn),最差情况是O(n²). ...
随机推荐
- SQL Server 汉字转拼音字母
/* 汉字转拼音首字母 */ create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declar ...
- View的呈现(二)加载流程
这块涉及到Code+Razor模板=>html[output流] 而这块的问题在于Razor最后生成了什么?--对象:一个类文件:eg:index.cshtml => index_cst ...
- Tarjan 求图点强联通,桥的应用
在图中求双联通和强联通分量是我们解决非树结构的图连通问题的利器 通过求求图的双联通和强联通分量能把图转化成DAG进行求解: 行走 Description 给出一个有向图,你可以选择从任意点出发走到任意 ...
- const,var,let 区别
js中const,var,let区别 1.const定义的变量不可以修改,而且必须初始化. 声明的是常量 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 co ...
- c#可自定义码表的base64加密解密算法类
000 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- HDU 1176 免费馅饼【动态规划】
解题思路:用a[i][j]表示在第i秒在地点j的掉落馅饼的数量,设整个馅饼掉落的时间持续为timemax,即为矩阵的高度,一共0到10个地点,为矩阵的长度,如图,即可构成数塔,因为考虑到在地点0的时候 ...
- Comparison of programming paradigms
Main paradigm approaches[edit] The following are widely considered the main programming paradigms, a ...
- ZBrush软件特性之Stencil模板调控板
在ZBrush中使用Stencil模板我们了解的所有绘图工具,通过它确定模板周围与涂画或模型的位置.本文将详解ZBrush®中如何使用“曲线板”自定义形状. 使用模版 ZBrush模版的作用象我们了解 ...
- video标签实现简单视频背景+遇到问题(视频无法显示,不能自动播放)
最近看网上有一些网站首页背景是炫酷的视频背景,就想模拟一个 1.video标签简介 video标签定义视频,就是可以在网页上实现视频的播放,详情见http://www.w3school.com.cn/ ...
- what is udev?
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...