
ACM
文章平均质量分 57
draper__QYT
青年时我有一个梦想,从改变我自己开始
展开
-
图——连通分量与深度优先遍历
介绍了如何实现图的深度优先遍历,并统计连通分量的个数。原创 2017-10-30 18:59:51 · 1352 阅读 · 0 评论 -
Euclid(欧几里得)算法
实现了欧几里得算法,求两个数的最大公约数原创 2017-11-11 21:01:41 · 592 阅读 · 0 评论 -
素数判定
判断是否为素数原创 2017-11-11 21:43:59 · 295 阅读 · 0 评论 -
图的实现
对稀疏图所对应的邻接表和稠密图所对应的邻接矩阵进行了实现原创 2017-10-27 16:05:17 · 298 阅读 · 0 评论 -
最小生成树——Lazy Prim
介绍了Prim求最小生成树的算法实现,以及一些图论有关的概念原创 2017-11-07 20:39:46 · 646 阅读 · 0 评论 -
LeetCode343 Integer Break
动态规划、记忆化搜索分别实现原创 2017-12-03 20:03:38 · 324 阅读 · 0 评论 -
集合覆盖
介绍了集合覆盖问题,用python实现了近似求解原创 2017-12-24 20:40:20 · 3292 阅读 · 0 评论 -
并查集——路径压缩
关于Rank的优化上文中我们已经对代码进行了几次优化,使得进行连接操作的时候,所形成的数长度尽量短,但同时也存在另一种情况:集合元素多,但是每个元素分别指向根节点,这样就只有两层(举例),那么就应该把这棵树的根节点指向另一棵树的根节点,就出现了所谓的“集合元素多,但是树长度短“的情况,因此,应当首先考虑树的长度,而非树的元素量。原创 2017-09-25 11:11:50 · 759 阅读 · 0 评论 -
Dijkstra——单源最短路径
实现了Dijkstra算法求单点最短路径原创 2017-11-16 20:34:59 · 365 阅读 · 0 评论 -
二叉树 的 存储与基本操作实现
利用C语言指针实现了二叉树的建立,实现了二叉树的先序遍历、中序遍历、后序遍历、交换左右子树的递归版本,并给出了效率更高的非递归方法、求深度、交换左右子树(递归)操作原创 2017-11-04 12:20:06 · 1434 阅读 · 0 评论 -
HDU 2031进制转换
第一次写博客,有点小紧张一开始觉得真的这题摸不着头绪,后来上网学习了一下,发现还是有类似模板的原题如下:进制转换Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 47127 Accepted Submission原创 2017-02-21 12:50:34 · 591 阅读 · 0 评论 -
图算法模板
包含图的基础实现(稠密图、稀疏图)、用迭代器遍历相邻节点、最后总结出一个图的通用模板,用文件输入输出流进行相邻节点的遍历。原创 2017-10-29 11:14:14 · 352 阅读 · 0 评论 -
并查集
并查集的具体实现,几次重要优化主要操作:find();unionElements();isConnected();原创 2017-09-24 19:36:12 · 203 阅读 · 0 评论 -
(二)几种排序算法的学习总结(归并排序)
(三)归并排序归并排序核心思想:将数组的元素不断二分(N个元素就有logN个层级),再向上归并(时间复杂度为O(n))(递归)。 途径:开辟一块相同大小的临时空间进行操作,使用三个索引分别表示:归并过程中跟踪的位置(k),两个表示两个子数组当前的元素(left、right),用middle表示中间位置//将arr[l...mid]和arr[mid+1...r]两部分进行归并 template<t原创 2017-09-14 20:19:04 · 596 阅读 · 0 评论 -
相邻节点迭代器
介绍了用迭代器的方式遍历一个节点所有相邻的节点,在为用户提供遍历服务的同时,对数据起到了很好的封装作用。原创 2017-10-28 10:51:33 · 368 阅读 · 0 评论 -
(一)几种排序算法的学习总结(选择排序与插入排序)
几种排序的学习总结(一)选择排序选择排序:在每次循环中找出最小的元素,将其移至开头,第二次找出次小元素,将其移至第二位,以此类推//泛型函数模板template<typename T>void selectionSort(T arr[],int n){//分别存放待排序的数组、数组元素个数 for(int i=0;i<n;i++){ int minIndex=i; /原创 2017-09-14 15:08:36 · 716 阅读 · 0 评论 -
(三)几种排序算法的学习总结(快速排序)
快速排序:“二十世纪最伟大的算法” 基础快速排序实现双路快速排序实现三路快速排序实现核心思想:每次从数组中选择一个元素作为基点,之后把该元素移动到排好序时应该所处的位置,使得基点之前的元素都小于它、之后的元素都大于它。之后对小于它、大于它的子数组分别递归进行快速排序 将元素移动到合适位置的函数:Partition原创 2017-09-16 08:42:30 · 511 阅读 · 0 评论 -
堆的思想及实现
最大堆: 1.堆中某个节点的值总是不大于其父节点的值 2.堆总是一棵完全二叉树。完全二叉树:除了最后一层节点,其他层所有的节点个数必须是最大值。最后一层所有的节点必须集中在左侧。二叉堆的数组实现:给每个节点编号,使得每个父节点的左节点序列号为父节点的二倍,右节点的序列号为父节点序列号的二倍加1parent(i) = i/2 left child(i) = 2*i right原创 2017-09-16 16:28:10 · 424 阅读 · 0 评论 -
堆排序实现
Heapify: 对于一个完全二叉树,第一个非叶子节点的索引是完全二叉树的元素个数除2得到的值原创 2017-09-17 20:39:39 · 266 阅读 · 0 评论 -
二分查找法与二分搜索树
使用前提:有序数列 迭代版本:template<typename T>int binarySearch(T arr[],int n,int target){ int l=0,r=n-1; while(l<=r){ int mid=l+(r-l)/2;// int mid=(l+r)/2; 可能会出现溢出 if(a原创 2017-09-21 16:56:48 · 427 阅读 · 0 评论 -
UVA 11624 Fire(双向BFS)
UVA 11624 Fire 题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2671 要求人在有限的时间内逃生,与求最短路径相似,用广搜 开设两个二维数组,分别记录人、火到达某点的时间,然后进行两次BFS即可,...原创 2018-07-24 19:20:00 · 270 阅读 · 0 评论