Sorting 插入排序-TStringList Delphi
我正在尝试使用插入和选择排序对文本文件中的整数进行排序。选择排序正常,但插入排序不适用于我的代码。有人能告诉我哪里错了吗?我的'numbers.txt'有5000行数字。提前谢谢 更新:我已经编辑了我的代码,它现在可以使用插入排序,但是它只对图像上的4个整数索引进行排序Sorting 插入排序-TStringList Delphi,sorting,delphi,insertion,tstringlist,Sorting,Delphi,Insertion,Tstringlist,我正在尝试使用插入和选择排序对文本文件中的整数进行排序。选择排序正常,但插入排序不适用于我的代码。有人能告诉我哪里错了吗?我的'numbers.txt'有5000行数字。提前谢谢 更新:我已经编辑了我的代码,它现在可以使用插入排序,但是它只对图像上的4个整数索引进行排序 var i, Position, n: integer; Value: string; begin n := Items.Count; for i := 1 to n - 1 do begin Val
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;
图像中的数据正按照其应有的顺序进行排序,因为您是根据字符串值进行排序的,并且基于比较,您所做的排序是完美的
“1143”
正好位于字符串值“11413”
和“11443”
之间,因为比较是逐字符进行的,以最短值的长度为准<代码>“1141”<“1143”<“1144”,基于每个字符串的前四个字符
如果需要实际的整数排序,则需要在比较这两个值之前将其转换为整数。类似的方法应该可以工作(注意,我没有测试您的整体排序逻辑-我只是使用了一些值来演示这个概念):
我在控制台窗口中从上面的代码中获得的输出:
1116
1122
11170
11178
11206
11221
11228
欢迎来到StackOverflow!您的代码甚至无法编译:缺少一个“then”。它既不能作为插入排序也不能作为插入排序。这种排序是在动态构建列表时完成的,从空列表开始,扫描项目的正确位置并将其插入其中或添加到列表末尾。另外,为什么不将所有文本转换为整数呢?排序可能会更快,但排序顺序并不相同,除非所有整数的长度相同,并且都用零填充。此表达式是错误的:
如果Position Done:=true
请使用调试器自行解决。从简单的输入数据开始,逐步建立起来。非常感谢!!确保使用不同顺序的测试集进行测试。如果第一个值是最大值之一,您会感到惊讶。使用一个小集合,说“5”、“2”、“1”,然后按照代码所做的操作,用F8逐步完成代码。
1116
1122
11170
11178
11206
11221
11228