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实现检测指定目录是否存在的方法
Jan 12 Javascript
javascript每日必学之封装
Feb 23 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php数组键名技巧小结
2015/02/17 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
javascript json 新手入门文档
2009/12/03 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
javascript date格式化示例
2013/09/25 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
用python写asp详细讲解
2013/12/16 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python交互模式基础知识点学习
2020/06/18 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Python request中文乱码问题解决方案
2020/09/17 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
电子商务网站的创业计划书
2014/01/05 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
小学课改工作总结
2015/08/13 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书