本文实例讲述了JS实现计算小于非负数n的素数的数量算法。分享给大家供大家参考,具体如下: 计算小于非负数n的素数的数量 例:输入: 10 输出: 4说明:有4个素数小于10,它们是2,3,5,7。 JS算法示例: <script>var countPrimes = function(n) {let flagArray = [],result = 0;for(let i = 2; i < n; i++){if(flagArray[i] === undefined){flagArray[i] = 1;result++;let j = 2;while(i * j < n){// 将以后与当前值能整除的排除掉f...
本文实例讲述了JavaScript实现获取两个排序数组的中位数算法。分享给大家供大家参考,具体如下: 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。 请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。 你可以假设 nums1 和 nums2 不同时为空。 示例 1:nums1 = [1, 3] nums2 = [2]中位数是 2.0 示例 2:nums1 = [1, 2] nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5 分析:用数组排序方法轻松解决 JS代码: v...
本文实例讲述了JS实现的RC4加密算法。分享给大家供大家参考,具体如下: RC4是一种简单的对称加密算法,在文本加密,通信加密等场景应用非常广泛。 在Web中可以用来对本地存储数据进行加密,比如存储cookie中的用户名和密码,敏感信息等。 以下是本人根据其思想基于JS实现的算法。 //var ctext = rc4("我是明文","我是密码"); //var text = rc4(ctext, "我是密码"); function rc4(data, key) {var seq = Array(256); //intvar das ...
本文实例讲述了JavaScript笛卡尔积超简单实现算法。分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS笛卡尔积算法</title> </head> <body> <script> function cartesianProd...
本文实例讲述了JavaScript树的深度优先遍历和广度优先遍历算法。分享给大家供大家参考,具体如下: 1、深度优先遍历的递归写法 function deepTraversal(node) {var nodes = [];if (node != null) {nodes.push(node);var children = node.children;for (var i = 0; i < children.length; i++)deepTraversal(children[i]);}return nodes; }2、深度优先遍历的非递归写法 function deepTraversal(node) {var nodes = [];if (node != nu...
本文实例讲述了JavaScript实现数组全排列、去重及求最大值算法。分享给大家供大家参考,具体如下: 1、全排列(递归) function permutation(arr){if (arr.length == 1)return arr;else if (arr.length == 2)return [[arr[0],arr[1]],[arr[1],arr[0]]];else {var temp = [];for (var i = 0; i < arr.length; i++) {var save = arr[i];arr.splice(i, 1);//取出arr[i]var res = permutation(arr);//递归排列arr[0],arr[1],...,arr[i-...
本文实例讲述了JS实现常见的查找、排序、去重算法。分享给大家供大家参考,具体如下: 今天总结了下排序简单的算法 【自定义排序】 先寻找一个最小的数,然后依次那这个数和数组中其他数字比较,如果发现比这个数字小的数就把这两个数调换位置,然后再继续寻找下一个最小的数字进行下一轮比较 var arr = [31, 6, 19, 8, 2, 3]; function findMin(start, arr) {var iMin = arr[start];var iMinIndex = start;for (var i = start + 1...
本文实例讲述了JS实现的合并多个数组去重算法。分享给大家供大家参考,具体如下: var arr1 = [a,b]; var arr2 = [a,c,d]; var arr3 = [1,d,undefined,true,null]; //合并两个数组,去重 var concat_ = function(arr1,arr2){//不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响var arr = arr1.concat();//或者使用slice()复制,var arr = arr1.slice(0)for(var i=0;i<arr2.length;i++){arr.indexOf(ar...
本文实例讲述了JS实现的计数排序与基数排序算法。分享给大家供大家参考,具体如下: 计数排序 计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O(n),空间复杂度为数组的数字范围。 /*** 范围在 start - end 之间的排序* 计数排序需要辅助数组,该辅助数组的长度是待排序数组的范围,所以一般用作范围小于100的排序*/ function...
本文实例讲述了JavaScript实现树的遍历算法。分享给大家供大家参考,具体如下: <script type="text/javascript"> var t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]; //下面这段深度优先搜索方法出自Aimingoo的【JavaScript语言精髓与编程实践】 var deepView = function(aTree,iNode) {(iNode in aTree) && (document.write(aTree[iNode]+<br/>),arguments.callee(aTree,2*iNode+1),arguments.callee(aTree,2*iNode+...
本文实例讲述了JS实现的全排列组合算法。分享给大家供大家参考,具体如下: 全排列组合算法,例如a,b,c,d进行全排列组合,则组合结果为:a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd。实现思路:从数据源拿出一个元素,依次与已存在的组合数据进行组合,循环上面操作直到数据源没有数据为止。 例子: 数据源a,b,c 1.拿出a,组合数据group为空,插入数据源a元素到组合数据group,此时group=[a] 2.拿出b,组合数据group拿出a,a...
本文实例讲述了JS实现的随机排序功能算法。分享给大家供大家参考,具体如下: 使用JS编写一个方法 让数组中的元素每次刷新随机排列 方法一: var arr =[1,2,3,4]; var t; for(var i = 0;i < arr.length; i++){var rand = parseInt(Math.random()*arr.length);t = arr[rand];arr[rand] =arr[i];arr[i] = t; } console.log(arr);方法二: var arr =[1,2,3,4]; var brr = []; var num = arr.length; for (var i = 0; i < num; i++){va...
本文实例讲述了基于JavaScript实现的顺序查找算法。分享给大家供大家参考,具体如下: 对于查找数据来说,最简单的方法就是从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果。这个方法叫做顺序查找,有时候也被叫做线性查找。它属于暴力查找技巧的一种。 顺序查找实现起来非常简单,代码如下: function generalSearch(arr,data){//普通的顺序查找,就是遍历一遍看是否找到for(var i=0;i<arr.length;i++){if(a...
本文实例讲述了基于JavaScript实现的折半查找算法。分享给大家供大家参考,具体如下: 折半查找也叫做二分查找,是针对有序表的一种查找方式,其思想如下: 将数组的第一个位置设为下边界; 将数组的最后一个位置设为上边界; 如果下边界等于或小于上边界,则做如下操作: 将中点设置为上边界加下边界之和除以二; 如果中点的元素小于查询的值,则将下边界设置为中点元素所在下标加1; 如果中点的元素大于查询的值,则将上...
本文实例讲述了JavaScript数据结构之二叉树的遍历算法。分享给大家供大家参考,具体如下: 三种遍历的代码: function inOrder(node){//中序遍历if(node!=null){inOrder(node.left);document.write(node.show()+" ");inOrder(node.right);} } function preOrder(node){//先序遍历if(node!=null){document.write(node.show()+" ");preOrder(node.left);preOrder(node.right);} } function postOrder(node){//后序遍历if(node!=null)...