不使用循环对字符串列表进行排序的伪代码

Pseudocode of sorting a list of strings without using loops

我试图想出一种算法,根据前 4 个字符(比如文件中的每一行)对字符串列表进行排序,而不使用传统的循环方法,例如 while,for。输入的一个例子是:

1231COME1900123
1233COME1902030
2031COME1923919
1231GO 1231203
1233GO 1932911
2031GO 1239391

问题是,我们事先不知道可以有多少条记录。每个4位身份证号码可以有多个COMEGO记录。但它们是预先按上述方式排序的。我想按文件的 4 位数 ID 号对文件进行排序。并实现这一目标:

1231COME1900123
1231GO 1231203
1233COME1902030
1233GO 1932911
2031COME1923919
2031GO 1239391

我唯一合乎逻辑的评论是我们应该使用递归方式来读取记录,但排序部分对我来说有点棘手。 GOTO 也可以使用。有任何想法吗?

假设每个条目的前 4 个字符始终是数字,您可以执行以下操作:

  1. 创建一个长度为 10000 的列表,其中每个元素可以包含一对值。
  2. 根据前 4 位数字输入列表的该元素。
  3. 各个元素的形状如下 -> [COME_ELEMENT, GO_ELEMENT].
  4. 每个COME_ELEMENTGO_ELEMENT本身就是一个列表,长度等于最大值+ 1 可以出现在 COME & GO.
  5. 之后
  6. 现在,当字符串到达​​时,在前 4 位将其断开。现在,转到列表的那个元素。
  7. 之后,检查是否成功。
  8. 如果是go(假设),则确定go.
  9. 字后面的数字
  10. 在内部列表中的索引处(在第 7 步中确定)插入字符串。
  11. 当您完成插入值后,只需遍历非空元素即可。

如此获得的结果将包含您需要的排序顺序,而无需使用循环。