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知识点收藏
Feb 22 Javascript
Prototype String对象 学习
Jul 19 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
vue实现简单loading进度条
Jun 06 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
Nov 08 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 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
多文件上载系统完整版
2006/10/09 PHP
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Python2与Python3的区别实例总结
2019/04/17 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
新闻报道策划方案
2014/06/11 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
微信早安问候语
2015/11/10 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
cypress测试本地web应用
2022/06/01 Javascript