![](https://img-blog.csdnimg.cn/20190927235930857.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
二、数据结构
syrdbt
这个作者很懒,什么都没留下…
展开
-
二分查找代码实现
功能:在一个长度为 n 的数组中 查询某个值 在这个数组中的位置。时间复杂度: log2(n)下面的算法应该使用于有序数组(升序),返回 [left, right) 范围内 最后一个小于等于 e 的数 的下标 。EG: b[5] = {1, 2, 3, 3, 5}; find(0, 5, 3) = 4数组int find(int left,int right, l...原创 2018-05-05 22:06:29 · 4448 阅读 · 0 评论 -
最小生成树 Kruskal 学习、代码实现
1.概述Kruskal最小生成树算法,算法的大概思路为:将所有边升序排列,然后从值最小的边开始取边,如果当前的边添加到已取的边中不构成环,则取该边,否则舍弃这条边,去判断下一条边,重复上述操作一直到取到n-1条边,这n-1条边和n个节点就是最小生成树。一个例子,基于这样的一个图:利用 Kruskal生成最小生成树的过程如下所示:2.代码实现Kruskal最...原创 2019-04-13 21:44:00 · 485 阅读 · 0 评论 -
归并排序(C++代码实现)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否...原创 2017-09-11 21:04:10 · 1426 阅读 · 0 评论 -
归并排序(Merging Sort)学习和Java代码实现
1.归并排序“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。归并排序的基本思路:(1)假设初始序列有n个记录,则可以看成n个有序的子序列,每个子序列的长度为1。(2)然后两两归并,得到[n/2]个长度为2或1(n为奇数的情况)的有序子序列;(3)两个有序子序列不断归并,重复上一步...(4)最终得到一个长度为n的子序列。举一个归并的例子,相同颜色的值为一...原创 2019-04-20 14:48:29 · 239 阅读 · 0 评论 -
二叉树Java代码实现(Binary Tree)
二叉树:二叉树是一种树形结构,它的特点是一个结点至多有两棵子树,并且二叉树的子树有左右之分。1.二叉树的遍历二叉树遍历有三种方式:先序遍历、中序遍历、后序遍历。先序遍历:访问根节点、先序遍历左子树、先序遍历右子树。中序遍历:中序遍历左子树、访问根节点、中序遍历右子树。后序遍历:后续遍历左子树、后续遍历右子树、访问根节点。先序遍历,访问根节点、先序遍历左子树、先序遍历右...原创 2019-05-16 18:50:57 · 8796 阅读 · 0 评论 -
堆排序学习、Java代码实现
堆排序(HeadSort)只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。堆的定义:n个元素的序列 {k(1),k(2),... k(n)} ,当其满足k(i)<=k(2*i)&& k(i)<= k(2*i+1)或者k(i)>=k(2*i) && k(i)>= k(2*i+1),称这个序列为堆。i...原创 2019-07-03 19:55:08 · 249 阅读 · 0 评论 -
深度优先搜索(DFS) 学习、Java代码实现
深度优先搜索(DFS)的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v的邻接点开始深度优先搜索,直至图中所有和v路径相通的顶点都被访问,然后选择另外一个没有被访问的顶点开始深度优先搜索。1.概述深度优先搜索(DFS)的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v的邻接点开始深度优先搜索,直至图中所有和v路径相通的顶点都被访问...原创 2019-07-12 21:57:19 · 16953 阅读 · 7 评论