【算法题基础知识汇总】教程文章相关的互联网学习教程文章

几种经典排序算法的JS实现方法_基础知识

一.冒泡排序function BubbleSort(array) {var length = array.length;for (var i = length - 1; i > 0; i--) { //用于缩小范围for (var j = 0; 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,3]; var result = BubbleSort(arr); console.log(result); /* [ 9, 8, 7, 7, 6, 5,...

javascript冒泡排序小结_基础知识

冒泡排序示例,双向冒泡排序与对双向冒泡排序稍微的改进的可视化效果。代码很简单,不知道有木有未知bug。 大神请勿吐槽 冒泡排序示例var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];for(var i=0;ils[j]){ls[i]=ls[i]+ls[j];ls[j]=ls[i]-ls[j];ls[i]=ls[i]-ls[j];} }}双向冒泡排序示例var ls=[ 6,13,98,25,38,...

日历查询的算法如何计算某一天是星期几_基础知识

如何计算某一天是星期几? —— 蔡勒(Zeller)公式 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(Zeller)公式。即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要...

JavaScript实现快速排序(自已编写)_基础知识【图】

简述: 用到javascript的排序一组数字,js没有直接的数字比较的函数可以调用,所以自己写了一个快速排序 知识点: 1. 正则表达式提取正负数字的string 2. str 转数字 放回列表 3. js的对象Sort类的声明及定义 4. Sort类构造函数、成员函数定义方式(prototype) 5. 快速排序算法 代码: 代码如下: . Quick Sort 输出:

基于KMP算法JavaScript的实现方法分析_基础知识

算法的核心是部分匹配表和回退算法,部分匹配表的实现如下: 代码如下:function kmpGetStrPartMatchValue(str) { var prefix = []; var suffix = []; var partMatch = []; for(var i=0,j=str.length;i<j;i++){ var newStr = str.substring(0,i+1); if(newStr.length == 1){ partMatch[i] = 0; } else { for(var k=0;k<i;k++){ prefix[k] = newStr.slice(0,...

js阻止默认事件与js阻止事件冒泡示例分享js阻止冒泡事件_基础知识

1. event.preventDefault(); -- 阻止元素的默认事件。注:a元素的点击跳转的默认事件 , button,radio等表单元素的默认事件 , div 元素没有默认事件 例: 代码如下:百度代码如下:var samp = document.getElementByTagName("a");samp.addEventListener("click",function(e){e.preventDefault()},false); 解释:点击链接的时候正常情况下会发生跳转,但是现在我们阻止了它的默认事件,即跳转事件,这时就不会跳转到百度了。 2. ev...

JavaScript排序算法之希尔排序的2个实例_基础知识【图】

插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率。但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位。希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布。一些老版本教科书和参考手册把该算法命名为Shell-Metzner,即包含Marlene Metzner Norton的名字,但是根据Metzner本人的说法,“我没有为这种算法做任何事,我的名字不应该出现在算法的名字中。” 希尔排...

Javascript排序算法之合并排序(归并排序)的2个例子_基础知识

归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有...

javascript中实现兼容JAVA的hashCode算法代码分享_基础知识【图】

在java中一个hashCode算法,可以用来计算一个字符串的hash值,今天一个朋友突然问俺能不能在js中计算hashCode,要求和java的hashCode计算结果一样。 对于java的hashCode,以前到现在也一直没有了解过其算法,不过猜想应该也不会太难,于是现在java中写了这段代码进行测试: 运行结果:899755 按下Ctrl键点击hashCode方法名跟进去看了下其算法,发现是很简单的几句代码,如下所示:代码如下: public int hashCode() { int h = hash;...

Javascript冒泡排序算法详解_基础知识

比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码如下: function sort(elements){for(var i=0;i<elements.length-1;i++){for(var j=0;j<elements.length-i-1;j++){if(elements[j]>elemen...

深入分析js的冒泡事件_基础知识【图】

在javascript的dom操作做肯定会遇到js的冒泡事件,最常见的是div弹窗事件如图解当点击灰色部分是弹窗消失,点击黑色部分时没有效果。 通过下面一段代码来分析js的冒泡事件 html代码:代码如下:js冒泡事件js冒泡事件分析Click me !var box=document.querySelector(".box"),btn=document.querySelector(".btn");box.onclick=function(event){alert("我是div");}btn.onclick=function(event){alert("我是button");}使用firefox浏览器的...

Javascript快速排序算法详解_基础知识

快速排序是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列。 假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为基准数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为...

javascript实现playfair和hill密码算法_基础知识

时至期末,补习信息安全概论作业。恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查百度边编码,顺便好好补习一下javascript基础。 playfair Playfair密码(英文:Playfair cipher 或 Playfair square)是一种替换密码。依据一个5*5的正方形组成的密码表来编写,表中排列有25个字母。对于英语中的26个字母,去掉最常用的Z,构成密码表。 实现思路: 1,编制密码表密钥是一个单词或词组,密...

JavaScript数据结构和算法之二叉树详解_基础知识【图】

二叉树的概念 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点 每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。二叉树中每一个节点都是一个对象,每一个数据节点都有三个指针,分别是指向父母、左孩子和右孩子的指针。每一个节点都是通过指针相互连接的。相连指针的关系都是父子关系。...

JavaScript数据结构和算法之图和图算法_基础知识【图】

图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 有向图有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也成为弧(Arc),用有序偶<Vi,Vj>来表示,Vi称为弧尾,Vj称为弧头。 无序图无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶(Vi,Vj)来表示。 简单图 简单图:在图结构中,若不存在顶点...