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弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
JS delegate与live浅析
Dec 21 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
学习python的几条建议分享
2013/02/10 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
python实现图片上添加图片
2019/11/26 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
python基于socket函数实现端口扫描
2020/05/28 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
市场部经理岗位职责
2014/04/10 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
销售督导岗位职责
2015/04/10 职场文书
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers