博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以空间换时间编程策略的细节问题以及解决方案
阅读量:4684 次
发布时间:2019-06-09

本文共 647 字,大约阅读时间需要 2 分钟。

问题:在以空间换时间的编程策略中,随着空间的增大,可能初始化空间本身需要消耗的时间越来越多。


可以通过设计如下的方案,在第一次访问向量的项时将其初始化为0,可以使用常量时间进行向量的初始化和向量访问,使用的额外空间正比于向量的大小,即进一步增加空间消耗来减少初始化的时间。

假设保存数据的向量的长度为n

下面通过两个额外的n元向量from,to和一个整数top,通过标识可以实现初始化向量data[0,n-1](data为保存数据的向量):

在开始时将整数top初始化为0,含义为data中已经首次访问过的数据的个数;

向量from的意义:from[i]的数据如果不是内存随机的数据,那么from[i]为data[i]第一次访问的顺序编号(data[i]是data中第几个进行首次访问的数据);

向量to的意义:to[i]为data第i个首次访问的数据编号(例如:to[0] = 2,说明data[2]为第0个首次访问的数据 ;to[2] = 3,说明data[3]为第2个首次访问的数据);

通过判断条件to[from[i]] == i是否成立来判断变量是否已经初始化,to和from数组交互验证保证数组中的对应项不会是内存里的随机内容。

对data[i]进行首次访问的操作如下:

from[i] = top;

to[top] = i;

data[i] = 0; (初始化为0)

top++;

 

转载于:https://www.cnblogs.com/lwyeah/p/8601811.html

你可能感兴趣的文章
微信小程序获取用户信息解密AES并且注意如何获取unionid
查看>>
JavaScript设计模式----1
查看>>
Qt实现半透明遮罩效果
查看>>
erlang调优方法
查看>>
Mysql linux -N命令
查看>>
daily scrum 12.5
查看>>
linux-ftp install
查看>>
NetXray
查看>>
局域网基本工作原理
查看>>
让历史告诉我们未来
查看>>
UVa540 Team Queue
查看>>
android 练习之路 (八)
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
压缩文件函数库(转载)
查看>>
【转】ubuntu12.04没有/var/log/messages解决
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
函数的复写
查看>>