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添加行?感谢
答案 0 :(得分:2)
K小于L,如果K-th小于L,则交换项目。你的比较是错误的。使用>
而不是<
。
你的索引也是可疑的。你的阵列真的是基于1吗?为什么你只在输出中加1到N-1?你错过了最后一项吗?换句话说,我怀疑你的代码中还有其他缺陷。你没有全部展示,所以我不能确定。
最后,为什么不使用内置的排序功能?