关于项目算法的思考
2012-01-20 19:57
232 查看
开始时间 2011.10
1、目前情况
采用二分插入排序,时间复杂度nlogn,目前采用结构体方式,如
struct RoomNo_R
{
int data;
int index;
};
index是按写入顺序加1,排序时按结构体整体调换,这样通过index可以再主文件中找到所有数据,但是排序后,数据移动,需要回写文件,写文件的IO次数较多,对于系统IO操作较慢的,这种无法接受
2、改进办法
struct RoomNo_R
{
int data;
int SortIndex;
int FileIndex;
};
加入新FileIndex存储原来的index值,新SortIndex用于存储data内容在内存的实际大小索引位置
需要改动:
(1)插入排序时,按原方式互换结构体,然后按排序后顺序for(i=1,i<RecordCount;i++)循环,更新RoomNo_R.SortIndex=i;
(2)只写入最后一条记录,能够大大减少IO次数
(3)初始化读取时,按SortIndex赋值给对应结构数组索引i
2012-01-23 更新
之前的思考存在问题,第二条只写最后一天是有问题的,因为索引也变化了,所以即使只存储索引值,也需要把所有改变的索引都重新写入磁盘
1、目前情况
采用二分插入排序,时间复杂度nlogn,目前采用结构体方式,如
struct RoomNo_R
{
int data;
int index;
};
index是按写入顺序加1,排序时按结构体整体调换,这样通过index可以再主文件中找到所有数据,但是排序后,数据移动,需要回写文件,写文件的IO次数较多,对于系统IO操作较慢的,这种无法接受
2、改进办法
struct RoomNo_R
{
int data;
int SortIndex;
int FileIndex;
};
加入新FileIndex存储原来的index值,新SortIndex用于存储data内容在内存的实际大小索引位置
需要改动:
(1)插入排序时,按原方式互换结构体,然后按排序后顺序for(i=1,i<RecordCount;i++)循环,更新RoomNo_R.SortIndex=i;
(2)只写入最后一条记录,能够大大减少IO次数
(3)初始化读取时,按SortIndex赋值给对应结构数组索引i
2012-01-23 更新
之前的思考存在问题,第二条只写最后一天是有问题的,因为索引也变化了,所以即使只存储索引值,也需要把所有改变的索引都重新写入磁盘
相关文章推荐
- 关于项目算法的思考(二)
- [科研笔记] 关于人工智能与算法项目的思考
- 关于 项目&团队 的几点思考
- 关于git项目管理分支策略的一点思考
- 关于算法的一点思考。。。
- 关于项目进度慢的思考----如何提高整体开发效率
- 关于寻路算法的一些思考(1):A*算法介绍
- 关于项目关键人物的一点思考
- 关于寻路算法的一些思考(1):A* 算法介绍
- 「关于单源最短路径的三种算法的思考(不包括计算多点路径的Floyd算法)」
- 专访DeepID发明者孙祎:关于深度学习与人脸算法的深层思考
- 关于项目中下单流程HTML设计的一些思考
- 你适合做一个项目经理吗 - 关于项目经理的终极思考
- 救火沉思录--关于项目最后阶段的思考
- 关于项目进度慢的思考----如何提高整体开发效率
- 关于算法竞赛入门经典一书的思考学习——枚举排序和子集生成!
- 关于项目完成后的逆向思考
- 推荐一个关于.NET平台数据结构和算法的好项目
- 关于如何衡量项目的进度一点思考
- 关于J2EE下的web项目的架构问题方面的思考