开始时间 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 更新
之前的思考存在问题,第二条只写最后一天是有问题的,因为索引也变化了,所以即使只存储索引值,也需要把所有改变的索引都重新写入磁盘