数组排序

arr.sort(function compare(a,b){return b.value-a.value});

json 排序

$.getJSON('URl',function(data){

    data.sort(function(a,b){return a.demoname-b.demoname});
})
排序
1、冒泡排序
     var arr = [1,4,2,6,8,5,1,3,4];
var temp ;
for (var i = 0; i < arr.length-1; i++){
  for (var j = 0; j < arr.length-i-1 ; j++){
    if (arr[j] > arr[j + 1]){
      temp = arr[j + 1];
      arr[j + 1] = arr[j];
      arr[j] = temp;
    }
  }
}
console.log(arr);
2、选择排序

   var arr = [1,4,2,6,8,5,1,3,4];
  for(var i=0;i<arr.length-1;i++){
    for(var j=i+1;j<arr.length;j++){
      if(arr[i]>arr[j]){
        var temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
      }
    }
  }
  console.log(arr);
   var arr=[1,4,2,6,8,5,1,3,4];
  var temp;
  for(var i=0;i<arr.length-1;i++){
    for(var j=arr.length-1;j>i;j--){
      if(arr[j]<arr[i]){
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
      }
    }
  }
  console.log(arr);

3、快速排序

 function quickSort(arr){
  var len=arr.length;//获取arr的长度
  if(len<=1){//如果arr的长度小于等于1则直接返回arr
    return arr;
  }
  var pIndex=Math.floor(len/2);//获取基准点
7   var pivot=arr.splice(pIndex,1);//用splice方法获取基准点pivot=[arr[pIndex]],此时的arr为去除第pIndex项之后的剩余项;
  var left=[];
  var right=[];
  for(var i=0; i<arr.length; i++){
    if(arr[i]<pivot[0]){//如果小于基准点就放到数组l中
12       left.push(arr[i]);
    }else{//如果大于等于基准点就放到右边数组中
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(pivot,quickSort(right));//递归不断重复整个过程
}

4、插入排序

 function insertSort(arr){
var temp=null;//定义一个临时变量保存要插入元素的值
for(var i=1; i<arr.length; i++){//从索引位置1开始遍历数组
if(arr[i]<arr[i-1]){//只有要插入的元素小于已排好序的最大元素的时候才需要进行下面的操作
temp=arr[i];//把要插入的元素赋给一个临时变量
var p=i-1;//已排好序的数组的最后一项索引为i-1
while(temp<arr[p] && p>=0){//如果要插入的元素小于已排好序的元素并且没有到已排好数组的开始位置
arr[p+1]=arr[p];//把大于要插入元素(temp)的已排好序元素位置往后挪一位
p--;//从后往前便利已经排好序的元素
}
arr[p+1]=temp;//把要插入的元素插入到已排好序的数组中,索引位置为p+1
}
}
return arr;//返回已排好序的数组
}

#3快速排序es6改写

let quickSort = (arr) => {
if(arr.length <= ){
return arr;
}
let sortIndex = Math.floor(arr.length/),
leftArr = [],
rightArr = [],
base = arr[sortIndex];
arr.splice(sortIndex,);
//此处需要去除参照项,否则会出现Maximum call stack size exceeded 递归调用超出限制
//简单写法 base = arr.splice(sortIndex,1)[0]
for(let i = ;i < arr.length;i++){
if(arr[i] < base){
leftArr.push(arr[i])
}else{
rightArr.push(arr[i])
}
}
return quickSort(leftArr).concat(base,quickSort(rightArr))
} let testArr = [,,,,,,,]
let result = quickSort(testArr);

js算法(1)的更多相关文章

  1. js算法集合(一) 水仙花数 及拓展(自幂数的判断)

    js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...

  2. js算法集合(二) javascript实现斐波那契数列 (兔子数列)

    js算法集合(二)  斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解.     Javascript实 ...

  3. js算法初窥03(简单搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  4. JS算法练习四

    JS算法练习 1.将使用空格分隔单词使用驼峰命名连接起来: var str="HELLO world welcome to my hometown"; /*--先输入一个有空格分隔 ...

  5. JS算法练习三

    JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...

  6. JS算法练习二

    JS算法练习 1.生成4位的随机验证码,可取大小写字母和数字 ? var validateCode = "", /*--存放生成好的验证码字符串--*/ count = 0; /* ...

  7. JS算法练习一

    JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...

  8. js算法初窥05(算法模式02-动态规划与贪心算法)

    在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...

  9. js算法初窥03(搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  10. js算法之寻路

    A*寻路算法 算法流程说明: 说明:起始节点记作S,目标节点记作E,对于任意节点P,从S到当前节点P的总移动消耗记作GP,节点P到目标E的曼哈顿距离记作HP,从节点P到相邻节点N的移动消耗记作DPN, ...

随机推荐

  1. 小爬爬4:selenium操作

    1.selenium是什么? selenium: - 概念:是一个基于浏览器自动化的模块. - 和爬虫之间的关联? - 帮我我们便捷的爬取到页面中动态加载出来的数据 - 实现模拟登陆 - 基本使用流程 ...

  2. 从Kubernetes 1.14 发布,看技术社区演进方向

    Kubernetes 1.14 正式发布已经过去了一段时间,相信你已经从不同渠道看过了各种版本的解读. 不过,相比于代码 Release,马上就要迎来5周岁生日的Kubernetes 项目接下来如何演 ...

  3. 中断源记录 INT0 INT1

    中断源记录 INT0 INT1 用到一个单片机 使用的 P3.1 P3.3 作为唤醒口,后来发一 P3.1 和 P3.3 使用的同一个中断 INT1,这个尴尬了,只能两选 一. 查看规格书,还好 P3 ...

  4. CTR+A组合键 以及终止按键事件传递

    Key UP 或Down 事件中 实现CTR+A全选 if ( Control.ModifierKeys==Keys.Control && e.KeyCode == Keys.A)   ...

  5. @雅礼集训01/10 - T1@ matrix

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个矩阵.求它的所有子矩阵中本质不同的行的个数之和. inp ...

  6. saltStack 配置管理(也就是替换文件)

    目录  /srv/salt/base下面新建一个文件dns.sls /opt/resolv.conf_bak:     #这个是文件替换的位置,也就说替换到远程文件的/opt/resolv.conf_ ...

  7. 高级PHP开发:利用PHPEMS搭建在线考试平台

    今天给大家分享一个小技巧,就是利用PHP ems搭建在线考试平台:希望能给你给予帮助: 在给大家分享之前,这里推荐下我自己建的PHP开发-VIP资料出售平台 :638965404,不管你是小白还是大牛 ...

  8. html选择题

    1.下面关于css样式和html样式的不同之处说法正确的是(A) A.html样式只影响应用它的文本和使用所选html样式创建的文本 B.css样式只可以设置文字字体样式        不仅仅能够设置 ...

  9. codeforces1217-edu

    C The Number Of Good Substrings 我原来的基本思路也是这样,但是写的不够好 注意算前缀和的时候,字符串起始最好从1开始. #include<cstdio> # ...

  10. H3C 配置高级ACL