算法、数据结构
文章平均质量分 78
普通网友
这个作者很懒,什么都没留下…
展开
-
并查集(Union-Find)算法介绍
本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。 更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。 原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。转载 2016-04-24 11:45:02 · 276 阅读 · 0 评论 -
背包问题九讲
P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便转载 2016-04-19 16:41:24 · 217 阅读 · 0 评论 -
无序整数数组中找第k大的数
写一段程序,找出数组中第k大小的数,输出数所在的位置。 【解法一】 我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他们的平均时间复杂度都是 O(N * log2N)。然后取出前 K 个,O(K)。总时间复杂度 O(N * log2N)+ O(K) = O(N * log2N)。 你一定注意转载 2016-04-19 11:53:00 · 513 阅读 · 0 评论 -
TOP –K算法详解
待写~转载 2015-07-08 22:35:51 · 696 阅读 · 0 评论 -
分治算法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模转载 2015-07-08 21:41:11 · 305 阅读 · 0 评论 -
搜索算法总结----序
1)盲目搜索 二分查找 BFS DFS 2)启发性搜索 A* 蚁群 模拟退火 遗传算法原创 2016-08-30 22:04:42 · 266 阅读 · 0 评论