JavaScript基础算法
来源:互联网 发布:mirror软件官网 编辑:程序博客网 时间:2024/06/08 09:06
最近抽空看了看基础算法,用JavaScript实现的,在这里做个笔记,以便以后查阅。。。老规矩直接上代码。。
/** 入门级算法-线性查找-时间复杂度O(n)--相当于算法界中的HelloWorld * @param Array * @param number * **/ function linearSearch(A, x) { for (var i = 0; i < A.length; i++) { if (A[i] == x) { return i; } } return -1;} /** 二分查找(又称折半查找) - 适用于已排好序的线性结构 - 时间复杂度O(logN) * @param Array * @param number * * */ 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; } /***冒泡排序 -- 时间复杂度O(n^2) * * @param Array */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; } }} /*** * 选择排序 -- 时间复杂度O(n^2) * 思路:找到最小值的下标记下来,再交换 * * */ function selectionSort(A) { for(var i = 0 ; i<A.length-1; i++) { var k = i; for( var j = i+1 ; j<A.length ; j++) { if(A[j]<A[k]) { k=j; } } if(k!=i) { A[k] = A[k] + A[i]; A[i] = A[k] - A[i]; A[k] = A[k] - A[i]; } } return A; } /*** * 插入排序 * 假定当前元素之前的元素已经排好序,先把自己的位置空出来, * 然后前面比自己大的元素依次向后移,直到空出一个"坑", * 然后把目标元素插入"坑"中 * * */function insertSort(A) { for (var i = 1; i < A.length; i++) { var x = A[i]; for (var j = i - 1; j >= 0&& A[j] > x; j--) { A[j + 1] = A[j]; } if (A[j + 1] != x) { A[j + 1] = x; } } return A;}
这几个基础的都还是比较简单,等过段时间再看看其他的算法。。。
0 0
- JavaScript基础算法
- JavaScript基础(四) ---- 算法
- JavaScript 基础(006_排序算法)
- Javascript数据结构算法之数组基础篇
- javaScript基础
- JAVASCRIPT 基础
- JavaScript基础
- JAVASCRIPT基础
- JavaScript 基础
- javascript基础
- javascript基础
- JavaScript 基础
- JavaScript基础
- javascript基础
- JavaScript基础
- javascript基础
- javascript基础
- Javascript基础
- 把修改后的文件写回war包
- js 递归遍历对象、数组、属性
- Swift语法基础:14 - Swift的字符使用, 计算数量, 连接字符串和字符, 字符串插值, 比较字符串
- UNIX文件系统中各种文件、概念和函数之间的关系
- SSL 相关文章 理解整理
- JavaScript基础算法
- OpenStack Juno安装---网络配置
- Redis中常用命令
- 详解boost库中的Message Queue
- 看好你的门-攻击服务端(6)-对SMTP注入攻击 操纵邮件发送
- POJ2456 Aggressive cows 二分
- 中缀转后缀并计算
- java多线程的总结(一)
- jQuery性能优化大全