本文实例为大家分享了JavaScript SHA512加密算法,供大家参考,具体内容如下 /** A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined* in FIPS 180-2* Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet* Distributed under the BSD License* See http://pajhome.org.uk/crypt/md5 for details.* http://ww...
本文实例为大家分享了js中RSA和AES加密解密详细代码,供大家参考,具体内容如下 <!doctype html> <html><head><meta charset=UTF-8></head><body><div class=test></div><script type="text/javascript">function encrypt(data, keyJSON){var data = new TextEncoder("UTF-8").encode(data);var randomsKeys = geneRandomHexStr(64); // 128 bit keysvar encryptedKey = hexStringToUint8Array(randomsKeys);var aesAlgo = {name: ...
一.冒泡排序var arr1=[3,9,2,7,0,8,4]; for(var i=0;i<arr1.length;i++){for(var j=i+1;j<arr1.length;j++){var temp=0;if(arr1[i]>arr1[j]){temp=arr1[i];arr1[i]=arr1[j];arr1[j]=temp;}} } alert(arr1);二.快速排序var a=[3,5,0,9,2,7,5]; function quickSort(arr){var len=a.length;if(len<=1) return arr;function sort(low,height){var pivot=a[low];var i=low,j=height,t;if(i>j) return false;while(i!=j){while(a[j]>=piv...
"快速排序"的思想很简单,整个排序过程只需要三步:(1)在数据集之中,选择一个元素作为"基准"(pivot)。(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。举例来说,现在有一个数据集{85, 24, 63, 45, 17, 31, 96, 50},怎么对其排序呢?第一步,选择中间的元素45作为"基准"。(基准值...
前面有分享过改变层级的轮播图算法,今天继续利用透明度来实现无位移的轮播图算法。 实现逻辑:将所有要轮播的图片全部定位到一起,即一层一层摞起来,并且利用层级的属性调整正确的图片顺序,将图片的透明度全部设置为0,然后在让初始的第一张图片的透明度为1即可,具体算法如下:<!DOCTYPE html> <html><head><meta charset="utf-8"><title>改变透明度算法(经典)</title><style media="screen">* {margin: 0;padding: 0;}.wrap {...
本文为大家分享了js实现常用排序算法,具体内容如下 1.冒泡排序 var bubbleSort = function (arr) {var flag = true;var len = arr.length;for (var i = 0; i < len - 1; i++) {flag = true;for (var j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j + 1]) {var temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;flag = false;}}if (flag) {break;}} }; 2.选择排序 var selectSort = function (arr) {var min;for (var i = 0;...
本文讲的内容都很初级, 主要是面向和我一样的初学者, 所以请各位算法帝们轻拍啊 引用已知线段1(a,b) 和线段2(c,d) ,其中a b c d为端点, 求线段交点p .(平行或共线视作不相交) 算法一: 求两条线段所在直线的交点, 再判断交点是否在两条线段上. 求直线交点时 我们可通过直线的一般方程 ax+by+c=0 求得(方程中的abc为系数,不是前面提到的端点,另外也可用点斜式方程和斜截式方程,此处暂且不论).然后根据交点的与线段端点的位置关系来判...
假如有一个数组是这样子: var arr1 = ["a", "b", "c", "d"];如何随机打乱数组顺序,也即洗牌。 有一个比较广为传播的简单随机算法: function RandomSort (a,b){ return (0.5 - Math.random()); }实际证明上面这个并不完全随机。 随便一搜网上太多这种东西了,看一下stackoverflow上的一个高分回答,答案出自github上。 knuth-shuffle The Fisher-Yates (aka Knuth) shuffle for Browser and Node.JS 下面一起看看上面说的这个算法...
有100格台阶,可以跨1步可以跨2步,那么一个有多少种走法; 今天电话面试。遇到一道算法问题,然后瞬间一脸懵逼; 然后机智的我,自作聪明的想到如果一个人每次都走1步,那么最多100步,每次走2步最少50步;然后明显跑题了。。。还好对方及时把我打断了。。。不然我估计要对着这玩意一直死脑经。。。一路走到黑。。 然后回到家了。拿着偶的mac,然后静静的思考,终于写出来了 var Stairs = new step(); function step(){this.n1=1;...
如下所示: // ---------- 一些排序算法 var Sort = {} Sort.prototype = {// 利用sort进行排序 systemSort:function(array){ return array.sort(function(a, b){ return a - b; }); },// 冒泡排序 bubbleSort:function(array){ var i = 0, len = array.length, j, d; for(; i<len; i++){ for(j=0; j<len; j++){ if(array[i] < array[j]){ d = array[j]; array[j] = array[i]; array[i] = d; } } } return array; },// 快速排序 qu...
1. 桶排序介绍 桶排序(Bucket sort)是一种基于计数的排序算法,工作的原理是将数据分到有限数量的桶子里,然后每个桶再分别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。当要被排序的数据内的数值是均匀分配的时候,桶排序时间复杂度为Θ(n)。桶排序不同于快速排序,并不是比较排序,不受到时间复杂度 O(nlogn) 下限的影响。 桶排序按下面4步进行: (1)设置固定数量的空桶。 (2)把数据放到对应的桶...
以var a = [4,2,6,3,1,9,5,7,8,0];为例子。 1.希尔排序。 希尔排序是在插入排序上面做的升级。是先跟距离较远的进行比较的一些方法。 function shellsort(arr){ var i,k,j,len=arr.length,gap = Math.ceil(len/2),temp; while(gap>0){ for (var k = 0; k < gap; k++) { var tagArr = []; tagArr.push(arr[k]) for (i = k+gap; i < len; i=i+gap) { temp = arr[i]; tagArr.push(temp); for (j=i-gap; j >-1; j=j-gap) { if(a...
1. 不得不说说二叉树 要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第 i 层至多有 2i - 1 个结点;深度为 k 的二叉树至多有 2k - 1 个结点;对任何一棵二...
一.冒泡排序 function BubbleSort(array) {var length = array.length;for (var i = length - 1; i > 0; i--) { //用于缩小范围for (var j = 0; j < i; j++) { //在范围内进行冒泡,在此范围内最大的一个将冒到最后面if (array[j] > array[j+1]) { var temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}console.log(array);console.log("-----------------------------");}return array; }var arr = [10,9,8,7,7,6,5,11...
推荐阅读:JavaScript学习笔记之数组的增、删、改、查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 洗牌算法是一个比较形象的术语,本质上让一个数组内的元素随机排列。举例来说,我们有一个如下图所示的数组,数组长度为 9,数组内元素的值顺次分别是 1~9:从上面这个数组入手,我们要做的就是打乱数组内元素的顺序:代码实现 维基百科上的 Fisher–Yates shuffle 词条对洗牌算法做了详细介绍,下面演示的...