深入理解JS实现快速排序和去重


Posted in Javascript onOctober 17, 2016

JS的快速排序和JS去重在面试的时候问的挺多的.下面是我对快速排序的理解,和快速排序,去重的代码.

1.什么是快速排序?

第一步: 快速排序就是去个中间值,把比中间值小的放在左边设为arrLeft,比中间值大的放在右边设为arrRight

第二步: 对arrLeft进行第一步,对arrRight进行第一步.(明显是一个递归嘛,当数组的长度小于2的时候结束)

第三步: 合并arrLeft,中间值,arrRight

quickSort = function(arr){
if(arr.length < ){
return arr;
}
var tmp = arr.splice(Math.floor(arr.length/), )[],
arrLeft = [],
arrRight = [];
for(var i = ; i < arr.length; i++){
if(arr[i] >= tmp){
arrRight.push(arr[i]);
}else{
arrLeft.push(arr[i]);
}
}
return arguments.callee(arrLeft).concat(tmp,arguments.callee(arrRight));
}

2.JS的去重?

大家第一个想到的应该是,循环一次数组,每取到一个值就与后面的比较,如果没有相同的就放入一个新数组里面,这样就去重了

第一种

var unique = function(arr){
var newArr = [];
while(arr.length){
var value = arr.shift();
for(var i = , len = arr.length; i<len; i++){
if(value == arr[i]){
break;
}
}
if(i == len){
newArr.push(value);
}
}
return newArr;
}

但是这样循环了二次,效率不好.下面提供的较好,声明一个对象,数组的值作为对象的属性并赋值为一,然后判断这个对象属性是否存在就行了

第二种

var unique = function(arr){
var arr = [];
var obj = {};
for(var i = , len = a.length; i < len; i++){
if(!obj[a[i]]){
obj[a[i]] = ;
arr.push(a[i]);
}
}
console.log(obj)
return arr;
};

还有一种就是排序并去重 ,这种就更加容易了.判断前面一个值是不是等于后面一个值如果相等,往后移动一位就行了

第三种

var unique = function(arr){
var newArr = [];
for(var i = , len = arr.length; i <len; i++){
if(arr[i] !== arr[i+]){
newArr.push(arr[i]);
}
if(i == len){
newArr.push(arr[i]);
}
}
return newArr;
}

以上所述是小编给大家介绍的JS实现快速排序和去重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
jQuery 使用个人心得
Feb 26 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
Oct 13 Javascript
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
一个php+js实时显示时间问题
Oct 12 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
Feb 26 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
May 10 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
基于vue如何发布一个npm包的方法步骤
May 15 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 #Javascript
Angular 2应用的8个主要构造块有哪些
Oct 17 #Javascript
jQuery表单验证简单示例
Oct 17 #Javascript
jQuery右下角悬浮广告实例
Oct 17 #Javascript
WEB前端实现裁剪上传图片功能
Oct 17 #Javascript
Javascript获取background属性中url的值
Oct 17 #Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 #Javascript
You might like
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
详解python读取image
2019/04/03 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
优秀员工个人的自我评价
2013/11/29 职场文书
仓库文员岗位职责
2014/04/06 职场文书
承诺书模板大全
2015/05/04 职场文书
红歌会主持词
2015/07/02 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python