![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法/数据结构
算法/数据结构
phygram
加油→_→
展开
-
一些特殊的二叉树
特殊种类的二叉树:平衡二叉树、二叉搜索树、B树、B+树、红黑树、AVL树原创 2020-10-11 22:13:01 · 303 阅读 · 1 评论 -
深度优先搜索与广度优先搜索
基本概念:对于某一组数据的搜索,除非这个数据结构支持特定的查找操作(例如unordered_map的查找根据哈希公式找到对应位置,时间复杂度是O(1)),否则就要采用遍历的方式进行搜索(例如链表的搜索就是遍历的方式)。对一组数据的搜索需要:(1)每个结点都要访问一次;(2)每个结点仅仅访问一次;(3)对于结点访问顺序的不同,分为:深度优先遍历(DFS = Depth First Search);广度优先遍历(BFS = Breadth First Search);除二者之外当然还有其他的搜原创 2020-09-27 21:53:53 · 1720 阅读 · 0 评论 -
归并排序_MergeSort
归并排序的实现过程:(1)把长度为n的输入序列分成两个长度为 n/2 的子序列;(2)对这两个子序列分别采用归并排序(递归);(3)将两个排序好的子序列合并成一个最终的排序序列。归并和快排具有相似性,但步骤顺序相反。归并:先排序左右子序列,然后合并两个有序子数组;快排:先调配出左右子数组,然后对于左右子数组记性排序(分治)。实现代码:class Solution {public: void mergeSort(vector<int>& nums, int原创 2020-09-18 00:25:01 · 114 阅读 · 0 评论 -
快速排序_QuickSort
快速排序的基本思想是:通过一趟排序将待记录分割成独立的两部分,其中一部分就的关键字均比另一部分的关键字小,则可分别对这两部分就继续进行排序,以达到整个序列有序。快速排序是工程代码中用的最多的,使用的分治思想,快速排序在这几个O(N*logN)的算法中也是效率最高的。关键点在于 == 递归(分治) + 快慢指针 ==实现代码:class Solution {public: void quickSort(vector<int>& nums, int begin, in原创 2020-09-18 00:05:32 · 71 阅读 · 0 评论