
个人对算法的一些认识
文章平均质量分 55
catch_catch
这个作者很懒,什么都没留下…
展开
-
怎样k^N的最高位
思路:k^N=10^(N lg k)。令:N lg k=a+b。其中:a为 N lg k的整数部分,b为小数部分。则所求最高位有10^b的首个非零数决定。在转换时的注意精度处理,最好把double与long long 相互转换,精度会损失少些,与Int可能会出错。原创 2015-05-06 17:39:42 · 591 阅读 · 0 评论 -
所谓的归并排序
归并排序:以前学过归并排序,把意思看懂了,但要是自己写代码实现,那是真的不会,现在看了紫书上的代码,现在真的是豁然开朗,看这个的原因是也是为了实现逆序对的O(N log N)实现。思路:其实,归并排序的实质就是二分,我们对二分并不陌生,经常用二分来查找某个值,我们可以把这个值称为二分的“附加值”(即:我们的目的),同样的在归并排序中,这个“附加值”不再是某个值,而是某个过程,这个过程就是“原创 2015-05-07 23:08:48 · 816 阅读 · 0 评论 -
最小生成树的两种算法:Prim和Kruskal算法
越来越明白了一个道理:你写不出代码的原因只有一个,那就是你没有彻底理解这个算法的思想!!以前写过最小生成树,但是,水了几道题后,过了一段时间,就会忘却,一点也写不出来了。也许原因只有一个,那就是我没有彻底理解这两种算法。主题:其实,求最小生成树有两个要点,一个是权值最小,还有一个就是这个图必须是树。而Prime和Kruskal的不同之处在于两者选择的变量不同,Prime选择的是始终保持原创 2015-04-25 22:42:28 · 3491 阅读 · 1 评论 -
所谓的 双向BFS
双向BFS,既然是双向的,那么就得知道起点和终点,这样,我们就可以进行双向搜索了。但是,双向BFS是否真的可以提高效率呢?如果能,那么又能提高多少呢?看到过一个图,说双BFS可以在BFS的基础上把时间和空间复杂度上都减半。实际上,在许多的实际应用中,往往不仅仅是减半!这就是我比较注重双BFS的原因。我们假设,单向BFS需要搜索N层才能到达终点,在每个层需要进行的判断量(即通常的那个原创 2015-04-03 21:04:56 · 4517 阅读 · 0 评论 -
浅谈图的前向星遍历
个人见解,如有错误,欢迎指出。作为一个算法新手,我就从我个人的角度来讲述前向星这种算法,我看到大多数都是建立一个边集的结构体,然后在结构体内放入边指向结点,边的前驱,和边权:例如:struct edge{//建立一个边集结构体 int next;//好一点的把next换成了pre,从字面上来讲更好理解 int w;//边的权值 int v;//边指向结点,原创 2015-02-26 13:48:58 · 1245 阅读 · 0 评论