一个需要使用数据结构的例子

PS:很多研究生同学都在说,数据结构,特别是一些复杂的数据结构,在“我们”写应用程序的时候几乎用不到。我曾深以为然。

这里仅举最简单的例子,说明使用数据结构的必要性,具体如何选择合适的数据结构,怎么实现,我还没有想好。

1.对一维信号(如心电图,语音信号等)进行处理,其中涉及到对信号分段,这些段分为重要段(ImpSec)和不重要段(UnImpSec),各段长度可能不同。

2.需要对重要段和不重要段分别进行处理,然后将处理结果进行连接、组合成新的信号便于存储或传输。这些操作具体来说,会涉及到求各段信号的长度,各段信号在原信号中的位置/索引,各段处理后信号与原信号中位置/索引的关系,处理后信号在新信号中的位置/索引……

3.显然将处理后的各信号段连接成新的一维信号,然后在连接的过程中记录这些“长度”、“索引”信息是比较节省存储空间的做法。因为作为结果只是存储了一维信号,以及各段在新信号中的索引这两个“数组”,而中间需要用到的其他各种信息(变量)在程序运行完之后就销毁了。

4.上面真的是最节省存储空间的做法吗?或者说考虑到时间复杂度等因素,3是最可取的吗?--由于需要反复对各段在原信号、新信号中的位置/索引进行操作,而我们都知道数组中对位置/索引的操作是很不方便的(毋宁用链表),所以需要引进新的数据结构,来表征各种处理对象,甚至存储结果,一来便于计算,二来节省存储空间。

上面只是最初级的设想,具体用什么还不了然,但引入新的数据结构来代替“原始的数组”操作,这个需求是毋庸置疑的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值