
算法
文章平均质量分 59
纯洁的小魔鬼
只有风暴才能击倒大树
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
道格拉斯轨迹抽稀算法
道格拉斯-普克算法是一种折线简化算法,通过递归方式减少数据点数量,同时保持原始形状。该算法设定阈值距离,计算中间点到首尾连线的垂直距离,保留距离超过阈值的点并进行分段处理。文章提供了Java实现代码,包括距离计算和递归简化过程。通过测试一段轨迹数据,对比原始轨迹(红线)和简化后轨迹(绿线),验证了算法在减少数据点的同时有效保持了轨迹形状特征。该算法在地理信息系统和计算机图形学中有广泛应用。原创 2024-05-13 00:10:49 · 1126 阅读 · 0 评论 -
二叉树基础
在计算机科学中,树是一种用于表示层次结构的抽象数据类型和非线性数据结构。树由一组节点(Nodes)和节点之间的关系(通常通过边表示)组成。树的定义具有以下特性和组成部分:2.特性树是一种递归的数据结构:树可以定义为包含子树的树。树是连通无环图:树是无环图(Acyclic Graph),且在树中任意两个节点之间只有唯一一条路径。3.树的组成1. 节点(Node):树的基本单位,包含数据或值。2. 根节点(Root Node):树的顶端节点,是树的唯一入口点。根节点没有父节点。3. 子节点(Child Node原创 2024-07-03 18:32:21 · 1049 阅读 · 0 评论 -
算法-贪心算法
本文介绍了贪心算法的核心思想及其在三个典型问题中的应用。贪心算法通过逐步选择局部最优解来构建全局最优解,适用于具有贪心选择性质和最优子结构的问题。文章详细阐述了活动选择问题(选择不重叠的最多活动)、分数背包问题(按单位价值排序装包)和哈夫曼编码(基于频率构建最优前缀编码)的贪心解决策略,并提供了Java代码实现。特别指出0/1背包问题需用动态规划而非贪心算法。这些案例展示了贪心算法在特定问题中的高效性和适用性。原创 2024-07-02 17:44:20 · 763 阅读 · 0 评论 -
算法-哈夫曼编码
哈夫曼树是一种基于字符频率的最优二叉树,用于数据压缩。通过统计字符频率,构建优先级队列,并采用贪心策略合并最小频率节点,最终生成前缀编码(高频字符编码短,低频字符编码长)。其优点包括高效压缩、简单实现、无损解码等,广泛应用于文件压缩、多媒体编码等领域。Java代码示例展示了静态和动态哈夫曼编码的实现方法,其中动态版本可适应流式数据频率变化。哈夫曼树还可用于网络路由优化、基因数据分析等其他场景,通过最小化编码长度显著提升存储和传输效率。原创 2024-06-25 18:31:27 · 5945 阅读 · 0 评论 -
算法-罗马数字转整数
本文介绍了将罗马数字转换为整数的方法。罗马数字包含7种字符(I,V,X,L,C,D,M),通常小数字在大数字右边直接相加,但在特定情况(如IV=4)需相减。算法思路是遍历字符串,比较当前字符与下一字符值,若当前值较小则减去当前值,否则累加。给出了Java、Python和Go的实现代码,时间复杂度O(n),空间复杂度O(1)。示例展示了如何转换"III"为3、"IV"为4等典型情况。原创 2024-05-29 22:34:10 · 462 阅读 · 1 评论 -
算法-回文数
摘要:本文介绍了判断整数是否为回文数的方法。回文数是指正反读相同的数字,如121。算法通过反转数字的后半部分,比较其与前半部分来判断。关键步骤包括处理特殊情况(负数、个位为0的非零数),反转后半数字,以及处理奇偶位数差异。提供了Java和Go语言的实现代码,时间复杂度为O(logn),空间复杂度为O(1)。该方法高效且节省内存,适用于大整数范围检测。原创 2024-05-29 22:07:51 · 591 阅读 · 0 评论 -
算法-两数之和
文章摘要:本文介绍了解决"两数之和"问题的两种方法。题目要求在整数数组中找到两个数,使其和等于目标值,并返回它们的下标。方法一采用暴力枚举,通过双重循环遍历所有可能组合,时间复杂度O(N²),空间复杂度O(1)。方法二利用哈希表优化,在遍历时存储元素值与下标,通过查询哈希表快速定位匹配项,时间复杂度降为O(N),但需要O(N)的额外空间。三种编程语言(Java/Python/Go)的实现代码均被提供,展示了算法在不同语言中的具体应用。原创 2024-05-29 20:41:30 · 404 阅读 · 0 评论 -
核密度分析
核密度估计(Kernel Density Estimation)是一种用于估计数据分布的非参数统计方法。数据可视化:核密度估计可以用来绘制平滑的密度曲线或热力图,从而直观地表示数据的分布情况。它可以帮助我们观察数据集中的高密度区域、低密度区域以及变化趋势。异常检测:通过核密度估计,我们可以识别数据中的异常点或离群值。异常点通常表现为低密度区域或与其他数据点明显不同的区域。概率密度计算:核密度估计可以用于计算给定数值的概率密度。通过将新数据点带入核密度估计函数,可以估计出该点在数据分布中的密度。原创 2024-02-22 17:17:16 · 11722 阅读 · 1 评论 -
判断一个点是否在某个多边形范围内(Java和python实现)
本文介绍了判断点是否在多边形内的两种实现方式:Java和Python。Java实现使用Geotools和JTS库,提供了两种方法:基于WKT字符串和基于坐标列表,通过contains()和intersects()方法进行判断。Python实现采用射线法,通过计算水平射线与多边形边的交点数量来判断位置关系,包含边界处理逻辑。两种实现都支持是否包含边界的参数设置,并提供了测试示例。Java方法更简洁但依赖第三方库,Python方法更底层但更灵活可控。原创 2019-09-19 00:23:08 · 7645 阅读 · 9 评论 -
根据geojson文件模拟随机点
一.判断一个点是否在某一个封闭多边形的范围内可以参考另一篇博客:判断一个点是否在封闭多边形内我们选取其中一个python方式建立文件 is_point_in_polygon.py"""判断某个坐标是否在某个封闭区域内"""# 判断该点是否在该条线上# point:点坐标,如:[113.775698, 30.236892]# o : 该条线的起点# d : 该条线的终点def is_in_line(point, o, d): # 先判断该点是否在线段范围内,如果不在,原创 2021-05-21 17:17:06 · 1016 阅读 · 2 评论 -
python坐标转换
该代码实现了几种常见地理坐标系的相互转换,包括WGS-84(GPS标准)、GCJ-02(火星坐标系)和BD-09(百度坐标系)。主要功能包括:火星坐标系与百度坐标系的互转(gcj02_to_bd09/bd09_to_gcj02)、WGS84与火星坐标系的互转(wgs84_to_gcj02/gcj02_to_wgs84),以及百度坐标系与WGS84的互转(bd09_to_wgs84/wgs84_to_bd09)。代码通过数学公式进行坐标偏移计算,并包含中国境内坐标判断(out_of_china)。这些转换在需原创 2019-11-24 22:00:13 · 5017 阅读 · 0 评论 -
排序算法总结
本文介绍了三种基础排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换将最大值"冒泡"到末尾,时间复杂度O(N²)。选择排序每次选择最小元素与首位交换,交换次数较少但同样是O(N²)。插入排序将元素逐个插入已排序序列,在随机数据中效率优于前两者。三种算法都包含Java实现代码,其中冒泡排序展示了逐步优化的过程(减少不必要的比较)。虽然时间复杂度相同,但在实际应用中,插入排序通常表现最佳,选择排序次之,冒泡排序效率最低。原创 2019-07-07 02:16:05 · 724 阅读 · 0 评论 -
python将列表平分
本文介绍了两种Python列表分割方法:1. split_list_average_n函数将列表分成多个固定大小n的子列表,如将7个元素的列表按大小4分割为2个子列表;2. split_list_n_list函数将列表均分成n个子列表,如将12个元素的列表4等分,每个子列表包含3个元素。两种方法都使用yield实现生成器,避免创建临时列表,适用于大数据处理。示例代码展示了两种方法的具体应用和输出结果。原创 2019-09-28 16:25:46 · 12664 阅读 · 1 评论 -
线段间以点填充(Python2)
这段Python代码实现了在给定线段上均匀生成点的功能,并输出为GeoJSON格式。主要功能包括:1)计算两点间直线方程和距离;2)在单条线段上按指定数量均匀生成点;3)处理多条相连线段,根据线段长度比例分配生成点数;4)将生成的点集输出为GeoJSON文件。代码通过数学计算实现点的均匀分布,支持水平和垂直线段处理,并能处理首尾相连的多边形边界。最终将生成的100个点保存到指定路径的GeoJSON文件中,适用于地理信息系统应用。原创 2019-01-15 14:20:12 · 874 阅读 · 0 评论 -
均匀分配算法(Python2)
摘要:本文介绍了两个数字分配问题的Python解决方案。第一个问题是将一个数字均分到给定集合中的每个数字,如将100均分到[2,3,4,5]得到[[50,50],[33,33,33],[25,25,25,25],[20,20,20,20,20]]。第二个问题是将数字按相同元素个数均分并匹配到二维数组,如将100分配到包含重复元素的列表中,输出形式为[[元素1,分配值],...]。两个函数分别使用循环计数和排序分组的方法实现数字的均分分配。原创 2019-01-15 14:30:04 · 5897 阅读 · 0 评论 -
环形回路算法(python3)
该程序从CSV文件读取城市间路径数据,计算以指定城市为起点的所有环形回路及其总长度。主要功能包括:1) 获取初始城市路径;2) 递归查找可达路径构建回路;3) 计算各回路总距离。程序输出按距离排序的去重环路列表,如对于城市A,可能输出类似['A-C-A',32]等结果。算法通过深度优先搜索遍历所有可能路径,并用列表存储中间结果,最后进行去重和排序处理。该实现适用于城市间路径规划等场景。原创 2019-08-27 23:40:41 · 1726 阅读 · 0 评论