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的一些注意
Dec 06 Javascript
node.js中的fs.readFileSync方法使用说明
Dec 15 Javascript
JavaScript检测字符串中是否含有html标签实现方法
Jul 01 Javascript
浅谈javascript中return语句
Jul 15 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
jQuery事件与动画基础详解
Feb 23 Javascript
js实现简易聊天对话框
Aug 17 Javascript
vue的mixins属性详解
Mar 14 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 Javascript
详解如何在nuxt中添加proxyTable代理
Aug 10 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
javascript实现前端成语点击验证
Jun 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
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
php上传文件问题汇总
2015/01/30 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
node-red File读取好保存实例讲解
2019/09/11 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python集合类型用法分析
2015/04/08 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
财务科科长岗位职责
2014/03/10 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
出纳岗位职责范本
2015/03/31 职场文书
教师岗位说明书
2015/09/30 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
Python机器学习之逻辑回归
2021/05/11 Python