【发布时间】:2021-05-15 08:13:59
【问题描述】:
我正在尝试使用插入和选择排序对文本文件中的整数 TStringList 进行排序。选择排序工作正常,但插入排序不适用于我的代码。有人能告诉我哪里错了吗?我的“numbers.txt”有 5000 行数字。提前致谢
更新:我已经稍微编辑了我的代码,它现在可以与插入排序一起使用,但它只对图像上的 4 个整数索引进行排序
var
i, Position, n: integer;
Value: string;
begin
n := Items.Count;
for i := 1 to n - 1 do
begin
Value := Items[i];
Position := i-1;
while (Position >0) and (Items[Position]>Value) do
begin
Items[Position+1]:= Items[Position] ;
Position := Position -1 ;
end;
Items[Position+1] := Value;
end;
end;
【问题讨论】:
-
欢迎来到 StackOverflow!您的代码甚至无法编译:缺少“then”。它既不能作为插入排序。这种排序是在动态构建列表时完成的,从一个空列表开始,扫描一个项目的正确位置并将其插入那里或将其添加到列表的末尾。另外,为什么不将所有文本转换为整数?排序可能会更快,但排序顺序不一样,除非所有整数都具有相同的长度并且全部用零填充。
-
这个表达式错误:
if Position Done := true -
使用调试器自己解决。从简单的输入数据开始,逐步建立起来。
-
非常感谢!!
-
请务必使用不同顺序的测试集进行测试。如果第一个值是最大的值,您会感到惊讶。使用一个小集合,比如“5”、“2”、“1”,然后按 F8 单步执行代码,按照代码正在执行的操作。
标签: sorting delphi insertion tstringlist