JavaScrip常见的一些算法总结


Posted in Javascript onDecember 28, 2015

 下面就简单列举一下javascript中常见的一些算法,需要的朋友可以做一下参考。当然这些算法不仅仅适用于javascript,同样也适用于其他语言。

一.线性查找:

比较简单,属于入门级的算法

//A为数组,x为要搜索的值
function linearSearch(A, x) {
for (var index = 0; index < A.length; index++) {
if (A[index] == x) {
return index;
}
}
return -1;
}

二.二分查找:

又称折半查找,适用于已排好序的线性结构。

//A为已按"升序排列"的数组,x为要查询的元素
//返回目标元素的下标
function binarySearch(A, x) {
var low = 0, high = A.length - 1;
while (low <= high) {
var mid = Math.floor((low + high) / 2); //下取整 
if (x == A[mid]) {
return mid;
}
if (x < A[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
return -1;
}

三.冒泡排序:

//冒泡排序
function bubbleSort(A) {
for (var i = 0; i < A.length; i++) {
var sorted = true;
//注意:内循环是倒着来的
for (var j = A.length - 1; j > i; j--) {
if (A[j] < A[j - 1]) {
swap(A, j, j - 1);
sorted = false;
}
}
if (sorted) {
return;
}
}
}

四.插入排序:

//插入排序
//假定当前元素之前的元素已经排好序,先把自己的位置空出来,
//然后前面比自己大的元素依次向后移,直到空出一个"坑",
//然后把目标元素插入"坑"中
function insertSort(A) {
for (var index= 1; index< A.length; index++) {
var x = A[index];
for (var j = index- 1; j >= 0 && A[j] > x; j--) {
A[j + 1] = A[j];
}
if (A[j + 1] != x) {
A[j + 1] = x;
println(A);
}
}
return A;
}

五.字符串反转:

//字符串反转(比如:ABC -> CBA)
function inverse(s) {
var arr = s.split('');
var index= 0, j = arr.length - 1;
while (index< j) {
var t = arr[index];
arr[index] = arr[j];
arr[j] = t;
index++;
j--;
}
return arr.join('');
}

以上内容给大家简单介绍了JavaScrip常见的算法总结,希望本文能够给大家带来帮助。

Javascript 相关文章推荐
javascript中获取下个月一号,是星期几
Jun 01 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
Javascript动态创建表格及删除行列的方法
May 15 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
js编写贪吃蛇的小游戏
Aug 24 Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 Javascript
jQuery操作css样式
May 15 jQuery
微信小程序实现笑脸评分功能
Nov 03 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
vue实现日历表格(element-ui)
Sep 24 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 #Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 #Javascript
Bootstrap实现响应式导航栏效果
Dec 28 #Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 #Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 #Javascript
Bootstrap实现默认导航栏效果
Sep 21 #Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 #Javascript
You might like
PHP 函数学习简单小结
2010/07/08 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
bootstrap vue.js实现tab效果
2017/02/07 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
turn.js异步加载实现翻书效果
2019/07/25 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
python简单获取数组元素个数的方法
2015/07/13 Python
Python科学画图代码分享
2017/11/29 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Django 多环境配置详解
2019/05/14 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
电信专业毕业生推荐信
2013/11/18 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
优良学风班总结材料
2014/02/08 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS