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

时间:2019-01-29 09:49:58

标签: algorithm sorting pseudocode

我试图考虑一种算法,该算法将根据字符串的前4个字符(例如文件中的每一行)对字符串列表进行排序,而无需使用诸如while,{{1 }}。输入示例如下:

  

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

问题是,我们不知道事先可以有多少条记录。每个4位ID号码可以有多个forCOME记录。但是它们按照上面的顺序排序。我想按其4位ID号对文件进行排序。并实现以下目标:

  

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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