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排序算法的更多相关文章

  1. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  2. js排序算法汇总

    JS家的排序算法   十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...

  3. 排序图解:js排序算法实现

    之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...

  4. 常用的 JS 排序算法整理

    关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...

  5. 自己写的JS排序算法

    这学期刚刚学完数据结构,之前就自己写了一点东西,现在整理一下. <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  6. js排序算法总结—冒泡,快速,选择,插入,希尔,归并

    相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...

  7. js排序算法总结——冒泡,快速,选择,插入,希尔,归并

    相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...

  8. 结构-行为-样式-Js排序算法之 直接插入排序

    最新因工作原因需要接触到算法,之前学习C++的时候有接触过算法,Javascript中实现算法其实也是大同小异.下面我讲下第一个实现的排序算法--直接插入排序.基本实现思路:假定一个数组中前n(n&g ...

  9. js排序算法总结

    快速排序 大致分三步: 1.找基准(一般是以中间项为基准) 2.遍历数组,小于基准的放在left,大于基准的放在right 3.递归 快速排序的平均时间复杂度是O(nlogn),最差情况是O(n²). ...

随机推荐

  1. ElementUI 表格表头筛选框的高度设置,超出一定高度,显示滚动条

    最近项目发现一个问题table表头筛选的时候,由于筛选内容过多导致弹出框超出屏幕,并且无法滚动,应急的办法是缩小浏览器显示比例让更多内容显示

  2. Repeater控件使用小结持续更新

    Repeater嵌套Repeater绑定数据 前台代码 <!--注意层级关系不要写错了--> <asp:Repeater ID="rpGroup" runat=& ...

  3. android webview一些注意事项(持续更新)

    1.loadUrl() 的参数必须“http://”开头: 2.如果用到内部类获取页面内容,此类不能混淆: 3.2中情况保持不混淆需要将webview所在的包都保持不混淆,常规的保持类不混淆不生效: ...

  4. Temporary Tables临时表

    1简介 ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables.这些临时表用来保存一个会话SESSION的数据, 或者保存在一个事务中需要的数据.当会话退出或者用户提 ...

  5. NYOJ 71 独木舟上的旅行【贪心】

    解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...

  6. Unity 需不需要再建Assets文件夹

    不需要,默认所有文件都是在Assets文件夹下创建的,看不到是因为设置了单栏模式,开启双栏模式就能看到了.

  7. CorelDRAW升级计划--如何购买

    了解通过全新 CorelDRAW 2017升级计划更新此图形设计软件所有最新功能的实惠方案.助升级计划,您可以在下一主要产品版本推出时便收到该版本,从而始终使您的产品保持最新.升级计划取代为 X6 和 ...

  8. 第二章 Python数据类型详解

    基本概念 迭代(iteration):如果给定一个list或tuple,我们可以通过for循环来遍历,这种遍历我们称为迭代(iteration) 可变:value改变,id不变,可变类型是不可hash ...

  9. 路飞学城Python-Day21(practise)

    编写程序, 如下有三点要求: 自定义用户信息数据结构, 写入文件, 然后读取出内容, 利用json模块进行数据的序列化和反序列化 e.g { "egon":{"passw ...

  10. [Atcoder Code Festival 2017 Qual A Problem D]Four Coloring

    题目大意:给一个\(n\times m\)的棋盘染四种颜色,要求曼哈顿距离为\\(d\\)的两个点颜色不同.解题思路:把棋盘旋转45°,则\((x,y)<-(x+y,x-y)\).这样就变成了以 ...