Fortran Coder

查看: 8410|回复: 8
打印 上一主题 下一主题

[空间几何] 如何找出数组中的非零元素及其坐标

[复制链接]

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
跳转到指定楼层
楼主
发表于 2015-11-16 15:59:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 山林悍匪 于 2015-11-16 16:42 编辑

雪球老大,如果一个比很长的数组由0和非0元素组成,如果用do循环去找会比较慢,有没有什么快一点的办法能找出元素和元素的坐标呢?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2015-11-16 22:05:33 | 只看该作者
数组的元素是否唯一
唯一的话,排序先,然后二分法查找,最坏的情况就是元素在首尾两端

739

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
711 元
贡献
365 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2015-11-16 22:11:44 | 只看该作者
排序应该比循环一次数组更费功夫吧?

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

地板
发表于 2015-11-16 22:35:08 | 只看该作者
楚香饭 发表于 2015-11-16 22:11
排序应该比循环一次数组更费功夫吧?

排序也有很多种方法可以挑选
元素唯一又不想排序,还可以用哈希表,就是多占用点内存
除非就只查找1、2次,不然排序还是划算的

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
5#
 楼主| 发表于 2015-11-17 07:59:43 | 只看该作者
pasuka 发表于 2015-11-16 22:35
排序也有很多种方法可以挑选
元素唯一又不想排序,还可以用哈希表,就是多占用点内存
除非就只查找1、2次 ...

数组里面的元素由零和大于零的元素构成,每一个循环里面都要查找四个数组,这样的循环多的时候回达到上千次整个过程大量的时间花在了找这些元素的坐标上了

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

6#
发表于 2015-11-17 09:00:32 | 只看该作者
山林悍匪 发表于 2015-11-17 07:59
数组里面的元素由零和大于零的元素构成,每一个循环里面都要查找四个数组,这样的循环多的时候回达到上千 ...

还是答非所问。。。
数组的元素是否唯一
数组里面的元素由零和大于零的元素构成

零元通常不会是查找目标,暂不计入,那么数组内大于零的元素是否唯一呢?
泛泛而谈,排序后再二分法查找是简便而有效的办法

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
7#
 楼主| 发表于 2015-11-17 09:20:37 | 只看该作者
pasuka 发表于 2015-11-17 09:00
还是答非所问。。。

您说的“唯一”是指数值相等吗?非零元素是大于零的互相数值不相等的浮点数

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
8#
发表于 2015-11-18 15:53:28 | 只看该作者
本帖最后由 kerb 于 2015-11-18 15:57 编辑

do循环也不是那么慢吧,

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

9#
发表于 2015-11-18 16:21:06 | 只看该作者
如果这个过程要循环做很多次,那么每次都循环遍历整个数组,确实就慢了。
根据情况选择哈希或排序。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 05:41

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表