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入门教程(10) 认识其他对象
Jan 31 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
JavaScript中原型和原型链详解
Feb 11 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
详解javascript中的事件处理
Nov 06 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
javascript绘制漂亮的心型线效果完整实例
Feb 02 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
Apr 24 Javascript
微信小程序实现拍照和相册选取图片
May 09 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 insert语法详解
2008/06/07 PHP
PHP静态文件生成类实例
2014/11/29 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
python实现无证书加密解密实例
2014/10/27 Python
编写Python CGI脚本的教程
2015/06/29 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
一组SQL面试题
2016/02/15 面试题
会展中心部门工作职责
2013/11/27 职场文书
员工拓展培训方案
2014/02/15 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技