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 事件属性绑定带参数的函数
Mar 13 Javascript
javascript操作cookie_获取与修改代码
May 21 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
JavaScript中如何判断一个值的类型
Sep 15 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
Oct 15 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
javascript验证form表单数据的案例详解
Mar 25 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Python在线运行代码助手
2016/07/15 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
浅析python函数式编程
2020/09/26 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
研发工程师的岗位职责
2013/11/18 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
活动总结模板大全
2015/05/11 职场文书
Android 中的类文件和类加载器详情
2022/06/05 Java/Android