文件内容排序问题
假设文件a.txt中的内容为
1
4
5
...
1000000000
文件中的内容是按顺序存放的,假设我现在向文件中追加一个“3”,希望文件中存放的还是有序数列,
因为排序算法只能在内存中进行,有没有什么想法,使插入一个值的复杂度最低?
[解决办法]
这个跟排序没什么关系吧,既然文件中的数据已经有序了,那么可以利用二分等方法知道新追加的数据要加在什么位置,然后改变文件的内容即可,可以在原文件上相应位置添加,或是新创建文件,然后删除原文件再将新文件名改为原来文件名
[解决办法]
对楼上做一下补充吧,硬盘的文件是不能随机访问的,因为磁头要寻道;但是已经开始兴起的固态盘是可以随机访问文件的,过若干年等固态盘替代了硬盘,“文件只能随机访问”就成历史了。
[解决办法]
二分搜索递归找出位置,通过选择算法每次去掉约一半的数。
[解决办法]
B+树吧。索引指针指向键值在文件中的偏移位置。
数据量还挺大的,似乎要考虑下不能全部装入内存中进行排序,B+树可以解决这种问题。