java - 在 Java 中写入文件时使用插入排序

标签 java insertion-sort

我在写入文件时尝试使用插入排序。我是 Java 的新手,似乎找不到解决方案。这是我正在使用的代码:

private void add(DbObject d) throws IOException {
    database = new RandomAccessFile(fName,"rw");
    database.seek(database.length());
    d.writeToFile(database);
    database.close();
}

这是在将人员信息添加到文件中。其中一个字段是 SSN#。目前,如果我要添加一个 SSN# 222222222 并且在它已经是一个 SSN# 为 444444444 的记录之前,222222222 记录将在 444444444 记录之后。我需要将其执行到 222222222 将自身插入到 444444444 记录之前的位置。

我知道我必须比较两者,并以某种方式将其中一个存储在某种 tmp 变量中,但我似乎不知道从哪里开始。非常感谢任何帮助。提前致谢!

最佳答案

  1. 您需要阅读文件以确定新记录需要去哪里。
  2. 您需要为新记录腾出空间
  3. 您需要在适当的位置写入新记录。

1 和 3 很简单; 2是讨厌的一点。 2 种主要方法:

  1. 将新记录之后的文件部分复制到文件中足够深的位置,以便为新记录腾出空间。
  2. 通过复制新记录之前的内容,然后写入新记录,然后复制之后的内容来制作文件副本。然后您可以删除文件的旧副本并重命名新副本。

如果文件中每一行的长度都相同,所有这些都会更容易一些。

顺便说一句:这真的不是插入排序。

关于java - 在 Java 中写入文件时使用插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764334/

相关文章:

java - ConcurrentHashMap 的迭代一致性保证

枚举实例的Java延迟加载

java - 如何探索 JGraphX 对象(即查找边和节点)?

c - 通过插入排序对数组进行排序

java - 模型的 Wicket 复杂数据类

java - 有状态 session bean,返回对象

c++ - 插入排序 - 处理空列表

c - 获取数组中的元素数量未按预期工作

java - C 代码给出了错误的答案,但 java 代码给出了关于 spoj 的正确答案

c - 请帮我调试我的插入排序程序