深入理解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 xml为数据源的下拉框控件
Jul 07 Javascript
JavaScript中使用Math.PI圆周率属性的方法
Jun 14 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
javascript断点调试心得分享
Apr 23 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
js回文数的4种判断方法示例
Jun 04 Javascript
js实现无缝轮播图
Mar 09 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
vue 图片裁剪上传组件的实现
Nov 12 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 eval函数用法总结
2012/10/31 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php实现的简单检验登陆类
2015/06/18 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python安装后的目录在哪里
2020/06/21 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
加拿大最大的书店:Indigo
2017/01/01 全球购物
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
授权委托书
2014/07/31 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
公司演讲稿开场白
2014/08/25 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python