摘取于:

http://www.cnblogs.com/super-d2/archive/2011/10/16/2212865.html

https://segmentfault.com/a/1190000008593715

http://blog.csdn.net/owen1190/article/details/76215932

js算法一直是我的薄弱项,也不敢直面这惨淡,突然静下来,学了进去,记录一下:

快速排序,(可能导致堆栈溢出):

//快速排序
function quickSort(arr){if(arr.length <= 1){return arr;}var left = [], right = [];var midpos = Math.floor(arr.length/2),mid = arr.splice(mid, 1)[0];for(var i = 0; i < arr.length; i++){if(arr[i] < mid){left.push(arr[i]);}else{right.push(arr[i]);}}return quickSort(left).concat([mid], quickSort(right));
}
quickSort([12,54,1,25,67,41,12]);

插入排序:

//插入排序
function insert(arr){var i, j, tmp;for(i = 0; i < arr.length; i++){tmp = arr[i];for(j = i; j >= 0; j--){if(arr[j - 1] > tmp){arr[j] = arr[j - 1];}else{arr[j] = tmp;break;}}}return arr;
}
insert([12,54,1,25,67,41,12]);

选择排序:

//选择排序
function checked(arr){var i,j,tmp,minindex,minvalue;for(i = 0; i < arr.length - 1; i++){minindex = i;minvalue = arr[minindex];for(j = i + 1; j < arr.length; j++){if(arr[j] < minvalue ){minindex = j;minvalue = arr[minindex];}}tmp = arr[i];arr[i] = arr[minindex];arr[minindex] = tmp;}return arr;
}
checked([12,54,1,25,67,41,12]);

归并排序:

//归并排序
function meger(left, right){var tmp = [];while(left.length && right.length){if(left[0] < right[0]){tmp.push(left.shift());}else{tmp.push(right.shift());}}return tmp.concat(left, right);
}
function megerSort(arr){if(arr.length === 1){return arr;}var left = [], right = [], mid;mid = Math.floor(arr.length / 2);left = arr.slice(0, mid);right = arr.slice(mid);return meger(megerSort(left), megerSort(right));
}
megerSort([12,54,1,25,67,41,12]);

冒泡排序1:

//冒泡排序1
function maopao1(arr){var i,j,tmp;for(i = arr.length; i >= 0; i--){for(j = 0; j < i; j++){if(arr[j] < arr[j - 1]){tmp = arr[j - 1];arr[j - 1] = arr[j];arr[j] = tmp;}}}return arr;
}
maopao1([12,54,1,25,67,41,12]);

冒泡排序2:

function maopao2(arr){var i,j,tmp;for(i = 0; i < arr.length; i++){for(j = 0; j < arr.length - i; j++){if(arr[j] < arr[j - 1]){tmp = arr[j];arr[j]= arr[j - 1];arr[j - 1] = tmp;}}}return arr;
}
maopao2([12,54,1,25,67,41,12]);

//冒泡排序3
function bullSort(arr){var temp;for(var i = 0; i < arr.length; i++){for(var j = arr.length-1;j > i;j--){if(arr[j] < arr[j-1]){temp = arr[j];arr[j] = arr[j-1];arr[j - 1] = temp;}}}return arr;
}
bullSort([12,54,1,25,67,41,12]);

一些常见的应用:

①查找数组中出现次数最多的数字

//查找数组中出现次数最多的数字
function getCount(arr){var i,j,maxnum,maxvalue = 0,obj = {};for(i = 0; i < arr.length; i++){if(!obj[arr[i]]){obj[arr[i]] = 1;}else{obj[arr[i]] += 1;}}console.log(obj);for( j in obj){if(obj[j] > maxvalue){maxnum = j;maxvalue = obj[maxnum];}}return maxnum + " : " + maxvalue;
}
getCount([12,54,12,54,79,11,12]);

②数组中的最大最小值的差值

//数组中的最大最小值的差值
function maxMin(arr){var min = arr[0], max = arr[0];for(var i =0; i < arr.length; i++){if(arr[i] < min){min = arr[i];}if(arr[i] > max){max = arr[i];}}return max - min;
}
maxMin([12,54,79,84,11,52]);

③反转字符串

//反转字符串1
function reverseStr(str){var newstr = '';for(var i = str.length - 1; i >= 0; i--){newstr += str[i];}return newstr;
}
reverseStr('abcdefghijklmnopqrstuvwxyz0123456789');

//反转字符串2
function reverseStr(str){var newstr = str.split(''), result = [], len = newstr.length;for(var i = 0; i < len; i++){result[(len - 1) - i] = newstr[i];}return result.join('');
}
reverseStr('abcdefghijklmnopqrstuvwxyz0123456789');

//反转字符串3
function reverseStr2(str){var newstr = str.split('');tmp,i = 0,j = newstr.length - 1;while(i < j){tmp = newstr[i];newstr[i] = newstr[j];newstr[j] = tmp;}return newstr.join('');
}
reverseStr('abcdefghijklmnopqrstuvwxyz0123456789');

④生成指定长度的字符串

//生成指定长度的字符串
function getStr(str, count){var newstr = '';for(var i = 0; i < count; i++){newstr += str.charAt(Math.floor(Math.random() * str.length));}return newstr;
}
getStr('abcdefghijklmnopqrstuvwxyz0123456789', 10);

⑤去重

//对象形式去重
function delMore(arr){var i, obj = {}, result = [];for(i = 0; i < arr.length; i++){if(!obj[arr[i]]){obj[arr[i]] = true;result.push(arr[i]);}}return result;
}
delMore([12,54,12,54,79,11,12]);

//选择排序方法去重
function insertMore(arr){var len = arr.length,newstr = [];for(var i = 0; i < len; i++){for(var j = i + 1; j < len; j++){if(arr[i] == arr[j]){++i;}}newstr.push(arr[i]);}return newstr;
}
insertMore([12,54,12,54,79,11,12]);

转载于:https://www.cnblogs.com/wobushijincan/p/7339771.html

面试常见的js简单算法相关推荐

  1. js 数组移除_2020前端面试--常见的js面试题

    (答案持续更新...) 1.简述同步和异步的区别 js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务 ...

  2. 面试常见几种排序算法 Java代码总结

    以下所有swap方法里面的代码都与如下代码等价: int tenp = arr[i]; arr[i] = arr[j]; arr[j] = temp; mid = (left + right) / 2 ...

  3. 来,做一道字节跳动面试的简单算法题

    面试大厂,算法基本是必面的,特别是字节跳动,技术面最后一个问题就是算法题,这次给大家带来一道字节跳动面试出的一道简单算法题. 请听题: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递 ...

  4. 编程面试过程中最常见的10大算法

    编程面试过程中最常见的10大算法 编程语言:C/C++ 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 A ...

  5. 计算机编程求最大公约数与最小公倍数,这是一个常见的简单算法

    计算最大公约数和最小公倍数是简单常见的算法,他有多种方式实现,比如:穷举法.辗转相除法.相减法等等,方法很多,目的相同,下面就用其中一种方法,辗转相除法来完成这个算法,下面将用计算机编程的方式实现. ...

  6. Android面试中常问的几种简单算法(两数之和、开灯、上楼梯、柠檬水、找最多的数)

    大家好,最近在面试,大小公司可能都会问一两个算法,来测试面试者的算法能力.本篇博客从笔者被问到的几个简单算法来给大家分享一下,(面试官会根据面试者的能力,提问不同难度,这篇的分享是比较简单的,大神可忽 ...

  7. 2017面试分享(js面试题记录)

    2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2'a8' * 3 2. 一道this的问题 var num = 10;var obj = {num:8,inner: {num ...

  8. Java面试常见知识点总结

    目录 面试常见知识点 静态代码块 代码块 构造方法之间的顺序 interface和abstract的区别 abstract能不能继承interface 反正可不可以 interface 和abstra ...

  9. jquery面试常见技术问题

    面试常见技术问题 ------------           JQ           -----------1.jq常见选择器? ,号选择器,分组选择器.空格,祖父选择器.>大于号,父子选择 ...

  10. java面试常见面试问题_Java面试准备:15个Java面试问题

    java面试常见面试问题 并非所有的访谈都将重点放在算法和数据结构上-通常,访谈通常只侧重于您声称是专家的语言或技术.在此类访谈中,通常没有任何"陷阱"问题,而是它们要求您利用内存 ...

最新文章

  1. HTML5column属性布局页脚,利用column多列属性调整页面文字列布局
  2. 第十三周项目三-形状类族中的纯虚函数
  3. require(os)
  4. C#_XXX事件 的重载均与委托System.EventHandler不匹配
  5. 从头开始开发gis_DevRel工程师一:从头开始建立开发人员关系团队
  6. 数据类型即其相互转换
  7. 使用cxf框架搭建webservice
  8. sqlserver日期函数
  9. unity图片模糊处理
  10. VB6升级到VB2010之一:变量升级~
  11. 服务器lsass占用内存_Lsass.exe进程占用大量内存
  12. 推荐10个国外图片素材网站
  13. 厦门大学c语言2017,厦门大学2017年各专业录取分数线
  14. 注塑机服务器显示e011,一种注塑机工业4.0联网系统以及监控方法
  15. 计算机科学的刊物卷号,期刊的卷号和期号怎么看
  16. android开发,如何给app授予系统权限
  17. 一元二次方程求解(C语言版)
  18. 阿里云数据湖分析急招实习生
  19. 报错:TypeError: Image data of dtype object cannot be converted to float
  20. 山东开票系统服务器地址是什么,山东省增值税发票综合服务平台网址

热门文章

  1. html3d龙卷风特效代码,使用Canvas 2D模拟出来的3D龙卷风动画特效
  2. ImportError: cannot import name ‘XGBClassifier‘
  3. 利用caffe日志进行测试精度训练损失等的画图(caffe训练结果可视化)
  4. module 'scipy.misc' has no attribute 'imread' 报错解决
  5. python之word2vec实战学习
  6. Java中的list---ArrayList与LinkedList
  7. 决策树 Decision Tree
  8. c++ 之 template函数模板
  9. 服务器下 读取springboot application配置文件_一文读懂 Spring Boot 配置文件 application.properties !...
  10. 浏览器插件 如何方便查看md文件内容 markdown