![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 62
算法题记录总结
SQCTM810
这个作者很懒,什么都没留下…
展开
-
二叉树(js实现)
二叉树基本概念基本术语二叉树类型性质遍历代码实现(js)前序遍历中序遍历后序遍历层序遍历二叉搜索树镜像二叉树重建二叉树其他常见算法题求二叉树深度二叉树结点总数判断二叉树子结构将二叉搜索树转换成一个排序的双向链表 基本概念二叉树是n个有限元素的集合,该集合或者为空、或由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成基本术语结点之间的关系若一个结点有子树,那么该结点称为子树根的双亲,子树的根称为该结点的孩子有相同双亲的结点互为兄弟一个结点的所有子树上的任何原创 2021-03-10 22:14:43 · 5547 阅读 · 2 评论 -
冒泡排序算法
冒泡排序算法算法描述代码实现(js)优化 算法描述原理:比较相邻的两个元素,将小的数据放前面,大的数据放后面第一趟,首先比较第1个和第2个元素,小数在前大数在后,再比较第2个和第3个数,以此类推将最大的数滚动到最后一个位置第二趟同理,将次大的数滚动到倒数第二个位置… 第n-1趟完成排序 代码实现(js)平均时间复杂度:O(n^2)空间复杂度:O(1) (用于交换)function BubbleSort(arr){ var len = arr.length;原创 2021-03-09 15:07:47 · 91 阅读 · 0 评论 -
二分查找法及其边界查找
二分查找法及其边界查找概述思路代码(js)局限性寻找左侧边界的二分查找寻找右侧边界的二分查找概述二分查找法又称为折半查找,适合对已排序好的数据集合进行查找,时间复杂度为O(log2n)思路假设一个有序数据集合,找出其最中间的元素,以中间元素为界将集合划分为左右两个子集将中间元素与目标元素进行比较,如果相等则是找到直接返回,如果大于/小于中间元素,否则到右子集中去找重复以上过程直到找到为止如果某一步数组为空,则是找不到目标元素,就返回-1代码(js)递归//升序数组的二分查找法原创 2021-02-20 17:15:26 · 631 阅读 · 0 评论 -
归并排序算法
归并排序算法核心思想步骤代码(js)核心思想分治:将问题分成一些小的问题然后递归求解,治则将分的阶段得到的各答案"修补"在一起分把原数组划分成两个子数组治将两个有序数组合并成一个更大的有序数组步骤将数组平均分成两个子数组,再递归将子数组也分割成两个更小的子数组当数组中只有一个元素时可以视为有序数组,开始合并操作设置两个指针,i指向前一个数组的第一个元素,j指向后一个数组的第一个元素;设置一个数组temp用来存储排序后的数组比较arr[i]和arr[j],谁更小就将谁存入tem原创 2021-02-19 14:56:22 · 75 阅读 · 0 评论 -
快速排序算法
快速排序算法思路步骤代码(js)思路在数组中选一个基准数(通常为数组第一个)将数组中小于等于基准数的数移到基准数左边,大于基准数的移到右边对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序步骤选取数组arr第一个数为基准数flag设置两个指针:i指向数组头部,j指向数组尾部;两个指针从数组的左右两边界向中间进行遍历先向左移动尾指针j :当arr[j] > flag时,直接继续移动j;当arr[j] < flag时,令arr[i]原创 2021-02-09 20:04:09 · 84 阅读 · 0 评论