深入理解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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
js实现日历与定时器
Feb 22 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
打通前后端构建一个Vue+Express的开发环境
Jul 17 Javascript
微信小程序结合mock.js实现后台模拟及调试
Mar 28 Javascript
详解一个小实例理解js原型和继承
Apr 24 Javascript
vue项目实现分页效果
Mar 24 Vue.js
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-MySQL教程归纳总结
2008/06/07 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Python正则表达式完全指南
2017/05/25 Python
python实现装饰器、描述符
2018/02/28 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
详解python tcp编程
2020/08/24 Python
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
周年庆典邀请函范文
2014/01/24 职场文书
社区端午节活动方案
2014/01/28 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
社区服务理念口号
2015/12/25 职场文书
2019公司管理制度
2019/04/19 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python