深入理解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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
Oct 18 Javascript
indexOf 和 lastIndexOf 使用示例介绍
Sep 02 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
Sep 20 Javascript
jquery中用函数来设置css样式
Dec 22 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
Jul 19 Javascript
VSCode搭建React Native环境
May 07 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
获取远程文件大小的php函数
2010/01/11 PHP
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
使用Python操作MySQL的一些基本方法
2015/08/16 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
python 美化输出信息的实例
2018/10/15 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
《蒲公英》教学反思
2014/02/28 职场文书
学校班班通实施方案
2014/06/11 职场文书
python 逐步回归算法
2021/04/06 Python
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技