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 相关文章推荐
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
三级下拉菜单的js实现代码
May 23 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
Javascript获取统一管理的提示语(message)
Feb 03 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
AngularJS 过滤器(自带和自建)详解
Sep 19 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
如何用threejs实现实时多边形折射
May 07 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设计模式 php实现模板方法模式
2015/12/08 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
python实现发送邮件及附件功能
2021/03/02 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
什么是网络协议
2016/04/07 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
技能竞赛活动方案
2014/02/21 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书