资讯专栏INFORMATION COLUMN

JS算法

xiao7cn / 1244人阅读

摘要:相关借鉴文章快速排序如果数组个数为个,则直接返回数组本身获取数组中间值的索引取到数组中间那个值,取值,不加,则打印出来是一个数组,例如,加,则打印出来是一个值,例如定义两个空数组,大于中间值放到,小于中间值放到数组去重冒泡排

相关借鉴文章:https://juejin.im/entry/57d90...


function quickSort(arr){

//如果数组个数为1个,则直接返回数组本身
if(arr.length<=1){
    return arr
}

//获取数组中间值的索引
var quickIndex = Math.floor(arr.length/2);
//quick取到数组中间那个值,[0]取值,不加[0],则打印出来是一个数组,例如[9],加[0],则打印出来是一个值,例如9;
var quick = arr.splice(quickIndex,1)[0];
//定义两个空数组,大于中间值放到right,小于中间值放到left
var left = [];
var right = [];

for(var i=0,len=arr.length;i

}
var arr = [3,5,7,2,11,77]
document.write(quickSort(arr));//2,3,5,7,11,77


var arr1 = [1,2,2,3,3,4,5,6,6],

  arr2 = [];

for(var i = 0;i < arr1.length;i++){

if(arr2.indexOf(arr1[i]) < 0){
    arr2.push(arr1[i])
}

}
document.write(arr2);//1,2,3,4,5,6

冒泡排序原理:让数组中的当前项和后一项进行比较,如果当前项大于后一项,我们让两者交换位置(小->大)

每一轮从前到后两两比较,虽然不一定实现最后的排序效果,但是可以把当前最大的放在末尾
具体比较的轮数:ary.length-1 数组有多长,我们只需要把总长度-1个数分别放在末尾,即可实现最后的排序
第一轮比较5次:一共六个,不需要和自己比较
第二轮比较4次:一共六个,不用和自己比,也不用和第一轮放在末尾的那个最大值比
第三轮比较3次:
...
每一轮比较的次数:ary.length - 1(不用和自己比)-当前已经执行的论数(执行一轮向末尾放一个最大值,这些值不需要在比较) a=12 b=13 a和b交换值

第一种方法:

c=a
a=b
b=c

第二种方法:
a=a+b;25

b=a-b;12
a=a-b;13

function bubble(ary){
for(var i=0;ifor(var j=0;jif(ary[j]>ary[j+1]){
var temp = ary[j];
ary[j] = ary[j+1];
ary[j+1] = temp;
}
}
}
return ary;
}
var ary = [5,3,1,57,89,9];
console.log(bubble(ary));

如果是从大到小排序,直接return ary.reverse();


Array.prototype.sum = function(){

var cur = 0;
return this.reduce((prev,next)=>{
    return cur = prev + next;
})
return cur;

}
var ary = [1,2,3,4];
console.log(ary.sum());//10

function sumFun(cur){

var sumTot = 0;
return cur.reduce((prev,next) => {
    return  sumTot = prev + next;
},0);
return sumTot;

}
var num = [1,2,3]
sumFun(num);//6

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102715.html

相关文章

  • 16道初级脚本算法,你要挑战一下吗?

    摘要:设置首字母大写算法挑战返回一个字符串确保字符串的每个单词首字母都大写,其余部分小写。确认末尾字符算法检查一个字符串是否以指定的字符串结尾。删除数组中特定值算法挑战删除数组中的所有的假值。 在w3cschool上看到了这些初级算法题目,自己先尝试做了一下,不会的也会查看一下别人的借鉴一下思路,更多的帮助自己熟悉字符串和数组方法的应用.如果您有更好的解法,可以指出来还有中级算法题目和后面的...

    kumfo 评论0 收藏0
  • 使用JS实现三种基本的排序算法以及三种算法的比较

    摘要:介绍排序算法是算法中最常见的算法之一,我这里要介绍的是排序算法中的三种基本算法冒泡排序选择排序插入排序,在文章的后面我会对三种算法的速度进行对比。 1.介绍 排序算法是算法中最常见的算法之一,我这里要介绍的是排序算法中的三种基本算法:冒泡排序、选择排序、插入排序,在文章的后面我会对三种算法的速度进行对比。 2.冒泡排序 冒泡排序其名来源与其算法实现,会使得数组中的元素一个个从数组一端漂...

    wh469012917 评论0 收藏0
  • Node.js学习之路16——加密

    摘要:使用方法创建一个对象创建对象,加密算法为读取该文件,为是文件的对象创建一个摘要输出摘要算法算法将散列算法与一个密钥结合在一起,以阻止对签名完整性的破坏。 未完成 1. 加密crypto 在crypto模块中,为每一种加密算法定义了一个类 可以使用getCiphers方法查看在Node.js中所有能够使用的加密算法crypto.getCiphers() 可以使用getHashes(...

    zacklee 评论0 收藏0
  • JS每日一题:Vue中的diff算法

    摘要:,文本节点的比较,需要修改,则会调用。,新节点没有子节点,老节点有子节点,直接删除老节点。所以一句话,的作用主要是为了高效的更新虚拟。 20190125 Vue中的diff算法? 概念: diff算法是一种优化手段,将前后两个模块进行差异对比,修补(更新)差异的过程叫做patch(打补丁) 为什么vue,react这些框架中都会有diff算法呢? 我们都知道渲染真实dom的开销是很大的...

    Caicloud 评论0 收藏0
  • JS写KPM算法

    摘要:通过观察发现,如果匹配字符串中有相同的子字符串,那么的变化会有所不同。所以这个值的变化跟目标字符串没什么关系,只跟自己的子字符串的重复性有关。的两侧子字符串相等,所以这时候倒数两位位位代码量不多但理解起来有点困难反正我理解了很久。 最近公司启动小程序项目中,在搜索模块有这么个功能需求:当用户输入搜索内容时实时地请求服务器得到一组较高匹配度的搜索关键字,在这些关键字中高亮显示用户的匹配输...

    winterdawn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<