- 博客(4)
- 收藏
- 关注
原创 图的割点和割边
从生成树的顺序来说,一个点是否是一个割点有两种情况: 1、该点是根节点并且有两个孩子。 2、该点是一个普通节点,他的孩子不能在不通过该点的情况下回到之前的点。 所以我们需要两个数组,一个num[]数组记录正常情况下每个点被访问到的次序,即时间戳;一个low[]数组记录其不通过父亲节点能到达的最早的点。 割点的判断条件为low[child]>=num[father],割边的判断条件为low[
2017-03-08 20:49:59 617
原创 dijkstra算法+堆优化 ///各种被坑~~~
主要思想:在选取当前距离最小点时,用堆的方法实现选最小点上时间的优化。 新手第一次写,各种被坑!!! 1、一定要用最小堆从堆顶取值,而不能用最大堆取排在最后的值,因为排在最后的值不一定是最小的。 2、因为不能在调整堆的时候直接改变dis[]的值(如果改变的话在输出的时候会乱掉..),所以应该只是借助dis[]的值去调整顶点的位置,所以需要一个数组(从1到n代表堆的位置,每个位置保存当前在这个
2017-03-04 20:01:58 2426
转载 简单算法———快速排序
#include #include void QuickSort(int *a ,int left , int right) { ///如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了 ///递归结束条件 if(left >= right) { return; } int i = left; in
2017-02-06 19:18:06 266
原创 简单算法———堆排序
#include #include ///array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数组的长度 ///本函数功能是:根据数组array构建大根堆 void HeapAdjust(int array[],int i,int nlength) { int nChild; int temp; for(;2*i+1 { nC
2017-02-06 14:52:49 240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人