德尔福选择排序似乎倒退了

时间:2016-11-06 15:58:44

标签: delphi delphi-2010

procedure TfrmSorting.btnSortClick(Sender: TObject);
var
K,L,I,iNumElements : integer;
sKeep : string;
begin
iNumElements := length(arrNames);
for K := 1 to iNumElements - 1 do
 begin
  for L := K + 1 to iNumElements do
    begin
      if arrNames[K] < arrNames[L] then
     begin
      sKeep := arrNames[L];
      arrNames[L] := arrNames[K];
      arrNames[K] := sKeep;
  end;
 end;
end;
reditNames.Lines.Clear;
I := 1;
for K := 1 to iNumElements - 1 do
  begin
    reditNames.Lines.Add(arrNames[I]);
    I := I + 1;
  end;
end;

我正在使用这种排序算法对数组进行排序。然后,我将内容显示在一个richedit上,但不是从A..Z显示它的显示Z..A。这个算法是否存在问题,或者我是如何向richedit添加行?感谢

1 个答案:

答案 0 :(得分:2)

K小于L,如果K-th小于L,则交换项目。你的比较是错误的。使用>而不是<

你的索引也是可疑的。你的阵列真的是基于1吗?为什么你只在输出中加1到N-1?你错过了最后一项吗?换句话说,我怀疑你的代码中还有其他缺陷。你没有全部展示,所以我不能确定。

最后,为什么不使用内置的排序功能?