日期:2014-05-19  浏览次数:20690 次

很难的排序问题
我定义了一个序号变量为double型。当在第9和10之间插入一页时,这页的排序号=(9+10)/2。但是如果继续插入若干页后就会发生溢出现象,也就是新插入的页面的排序号计算出来等于9或者10,这时需要重新排序所有页面,但是页面很多,重新排序很费时间,请问大家,有没有更好的办法解决这个重新排序的问题?

------解决方案--------------------
用int型来表示序列号好了,每次插入一个序列号时把排在后面的序列号都加1。
------解决方案--------------------
同意楼上,一个update语句搞定

大概是:
update tablename set id = id + 1 where id > = 10;
insert tablename (id) values(10);
------解决方案--------------------
数据库用varchar ,例如001,002,003....
当001有多个的时候,用这种格式001001,001002,001003....
------解决方案--------------------
不存在哪种方法添加、查找的复杂度都是O(1)的。
LZ想要那种结果?添加复杂度是O(n)还是查找复杂度是O(n)?
------解决方案--------------------
调整序号是必须的
------解决方案--------------------
字符型,9到10之间的插入序号为9-1,9-2