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 相关文章推荐
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
jquery判断checkbox(复选框)是否被选中的代码
Oct 20 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
jquery通过a标签删除table中的一行的代码
Dec 02 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
详解AngularJS控制器的使用
Mar 09 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
JS实现按比例缩小图片宽高
Aug 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
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python中的五种异常处理机制介绍
2014/09/02 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python 列表推导式使用详解
2019/08/29 Python
Python 字符串池化的前提
2020/07/03 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
中国梦的演讲稿
2014/01/08 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
交通事故代理词范文
2015/05/23 职场文书
工作时间证明
2015/06/15 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
正则表达式基础与常用验证表达式
2022/06/16 Javascript
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers