您的位置:首页 > 其它

关于项目算法的思考

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 更新

之前的思考存在问题,第二条只写最后一天是有问题的,因为索引也变化了,所以即使只存储索引值,也需要把所有改变的索引都重新写入磁盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: