不使用循环对字符串列表进行排序的伪代码
Pseudocode of sorting a list of strings without using loops
我试图想出一种算法,根据前 4 个字符(比如文件中的每一行)对字符串列表进行排序,而不使用传统的循环方法,例如 while
,for
。输入的一个例子是:
1231COME1900123
1233COME1902030
2031COME1923919
1231GO 1231203
1233GO 1932911
2031GO 1239391
问题是,我们事先不知道可以有多少条记录。每个4位身份证号码可以有多个COME
和GO
记录。但它们是预先按上述方式排序的。我想按文件的 4 位数 ID 号对文件进行排序。并实现这一目标:
1231COME1900123
1231GO 1231203
1233COME1902030
1233GO 1932911
2031COME1923919
2031GO 1239391
我唯一合乎逻辑的评论是我们应该使用递归方式来读取记录,但排序部分对我来说有点棘手。 GOTO
也可以使用。有任何想法吗?
假设每个条目的前 4 个字符始终是数字,您可以执行以下操作:
- 创建一个长度为 10000 的列表,其中每个元素可以包含一对值。
- 根据前 4 位数字输入列表的该元素。
- 各个元素的形状如下 -> [COME_ELEMENT, GO_ELEMENT].
- 每个COME_ELEMENT和GO_ELEMENT本身就是一个列表,长度等于最大值+ 1 可以出现在 COME & GO.
之后
- 现在,当字符串到达时,在前 4 位将其断开。现在,转到列表的那个元素。
- 之后,检查是否成功。
- 如果是go(假设),则确定go.
字后面的数字
- 在内部列表中的索引处(在第 7 步中确定)插入字符串。
- 当您完成插入值后,只需遍历非空元素即可。
如此获得的结果将包含您需要的排序顺序,而无需使用循环。
我试图想出一种算法,根据前 4 个字符(比如文件中的每一行)对字符串列表进行排序,而不使用传统的循环方法,例如 while
,for
。输入的一个例子是:
1231COME1900123
1233COME1902030
2031COME1923919
1231GO 1231203
1233GO 1932911
2031GO 1239391
问题是,我们事先不知道可以有多少条记录。每个4位身份证号码可以有多个COME
和GO
记录。但它们是预先按上述方式排序的。我想按文件的 4 位数 ID 号对文件进行排序。并实现这一目标:
1231COME1900123
1231GO 1231203
1233COME1902030
1233GO 1932911
2031COME1923919
2031GO 1239391
我唯一合乎逻辑的评论是我们应该使用递归方式来读取记录,但排序部分对我来说有点棘手。 GOTO
也可以使用。有任何想法吗?
假设每个条目的前 4 个字符始终是数字,您可以执行以下操作:
- 创建一个长度为 10000 的列表,其中每个元素可以包含一对值。
- 根据前 4 位数字输入列表的该元素。
- 各个元素的形状如下 -> [COME_ELEMENT, GO_ELEMENT].
- 每个COME_ELEMENT和GO_ELEMENT本身就是一个列表,长度等于最大值+ 1 可以出现在 COME & GO. 之后
- 现在,当字符串到达时,在前 4 位将其断开。现在,转到列表的那个元素。
- 之后,检查是否成功。
- 如果是go(假设),则确定go. 字后面的数字
- 在内部列表中的索引处(在第 7 步中确定)插入字符串。
- 当您完成插入值后,只需遍历非空元素即可。
如此获得的结果将包含您需要的排序顺序,而无需使用循环。