首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从二维数组中提取聚集数据?

如何从二维数组中提取聚集数据?
EN

Stack Overflow用户
提问于 2015-01-04 19:17:03
回答 1查看 416关注 0票数 0

我有一个1024x1024数组,二进制值为0或1,由噪声算法生成。1总是分组在一起。想象一下,它就像一个由0组成的平面和由1组成的岛屿。

我想把任何一个1的孤岛提取到一个新的列表中(我碰巧使用的是C#,但任何容器都可以)。如果一个岛屿的3x3个相邻点都不与另一个岛屿重叠,则认为该岛屿是独立的。

这听起来可能是一个常见的问题,但我不知道要搜索的任何候选算法的名称。

我现在正在通过检查每一个点和它的邻居来做这件事。

有没有更快的方法来做到这一点?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-04 19:25:16

对每个"1“执行Flood-Fill操作,以获取它所属的”岛“。对所有的1重复。复杂度与矩阵的大小成线性关系。

有效的伪代码可以是:

代码语言:javascript
运行
复制
 1. set <- new Set
 2. for each cell (i,j) in matrix, if matrix[i][j] == 1:
     2.1. set.add(i,j)
 3. while set is not empty:
   3.1. island <- floodFill(i,j) // start flood fill from i,j
   3.2. set.removeAll(island) //remove already found 1's
   3.3. yield island
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27764957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档