
数据结构与算法
文章平均质量分 65
杜小白Zero
这个作者很懒,什么都没留下…
展开
-
JavaScript数据结构与算法——二叉树
二叉树的概念二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。二叉树中每一个节点都是一个对象,每一个数据节点都有三个指针,分别是指向父母、左孩子和右孩子的指针。每一个节点都是通过指针相互连接的。相连指...转载 2018-03-28 20:23:47 · 392 阅读 · 0 评论 -
二叉树笔试题汇总
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉...转载 2018-03-28 20:45:08 · 1186 阅读 · 0 评论 -
JavaScript经典排序算法——归并排序
“归并”的意思是将两个或两个以上的有序表组合成一个新的有序表。假如初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2](向上取整)个长度为2或1的有序子序列;再两两归并,……,如此重复,直到得到一个长度为n的有序序列为止,这种排序方法称为2-路归并排序。步骤解析:1、把长度为n的输入序列分成两个长度为n/2的子序列;2、对这两个子序列继续分为m/2的...原创 2018-05-02 10:26:18 · 1798 阅读 · 0 评论 -
JavaScript经典排序算法——计数排序
计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。就是遍历数组记录数组下的元素出现过多次,然后把这个元素找个位置先安置下来,简单点说就是以原数组每个元素的值作为新数组的下标,而对应小标的新数组元素的值作为出现的次数,相当于是通过下标进行排序。动图演示: JavaScript代码实现:functio...原创 2018-05-02 11:21:21 · 1625 阅读 · 1 评论 -
JavaScript经典排序算法——冒泡排序
冒泡排序是一种简单的排序算法。它重复的走访要排序的数列,首先将第一个元素和第二个元素进行比较,若为逆序(Ri>Rj),则将两个元素互换,然后比较第二个元素与第三个元素,以此类推,直到第n-1个元素和第n个元素进行比较为止。这一过程为第一趟冒泡排序,其结果使得最大的元素被安置在最后一个元素位置上。然后进行第二趟冒泡排序,对前n-1个元素进行同样操作,其结果是将次大的元素安置在第n-1个元素的位...原创 2018-04-25 15:38:36 · 402 阅读 · 0 评论 -
JavaScript经典排序算法——快速排序
快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将待排序列分割成独立的两部分,其中一部分序列均比另一部分序列的元素小,则可分别对这两部分序列继续进行排序,以达到整个序列有序。首先在待排序记录中选取一个元素作为基准(pivot),然后将所有小于它的元素都安置在它的左边,所有大于它的元素都安置在它的右边。由此可以将该”枢轴“最后所落的位置i作为分界线,将原序列分为两个子序列R1……Ri-1和R...原创 2018-04-25 17:34:39 · 442 阅读 · 0 评论 -
JavaScript经典排序算法——选择排序
选择排序的基本思想是:每一趟在n-i+1(i=1,2,3……,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。选择排序的比较次数与初始元素顺序无关,它的最好、最坏、平均时间复杂度都是O(n^2).一趟简单选择排序的操作为:通过n-i次关键字间的比较,从n-i+1个记录中选择出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。动态演示: 简单选择排序过程图:...原创 2018-04-26 11:45:27 · 357 阅读 · 0 评论 -
JavaScript经典排序算法——堆排序
堆是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子:该数组从逻辑上讲就是一个堆结构,用简单的公式描述一下堆的定义就是:大顶堆:arr[i] >= arr[2i+1] OR arr[i] >= arr...原创 2018-04-27 11:00:11 · 217 阅读 · 0 评论