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 相关文章推荐
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
vue动态绑定class的几种常用方式小结
May 21 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 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 异常处理实现代码
2009/03/10 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
vue filters的使用详解
2018/06/11 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
置业顾问岗位职责
2014/03/02 职场文书
倡议书格式模板
2014/05/13 职场文书
求职信内容怎么写
2014/05/26 职场文书
经营理念口号
2014/06/21 职场文书
诚信教育主题班会
2015/08/13 职场文书