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 相关文章推荐
学习ExtJS accordion布局
Oct 08 Javascript
绑定回车enter事件代码
May 18 Javascript
通过js来制作复选框的全选和不选效果
May 22 Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 Javascript
在React框架中实现一些AngularJS中ng指令的例子
Mar 06 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
详解JavaScript的this指向和绑定
Sep 08 Javascript
TypeScript 内置高级类型编程示例
Sep 23 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
初学Javascript的一些总结
2008/11/03 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
详解python3百度指数抓取实例
2016/12/12 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
广告词串烧
2014/03/19 职场文书
水毁工程实施方案
2014/04/01 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
村党组织公开承诺书
2015/04/30 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android