关于项目算法的思考

开始时间 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 更新

之前的思考存在问题,第二条只写最后一天是有问题的,因为索引也变化了,所以即使只存储索引值,也需要把所有改变的索引都重新写入磁盘


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值