你能此问题解决吗?(请进!)(100分)

  • 主题发起人 主题发起人 coolnpss
  • 开始时间 开始时间
C

coolnpss

Unregistered / Unconfirmed
GUEST, unregistred user!
在TStringList中加入大约>10000个字符串,如何进行快速的排序,或者有其他
更快的解决方法吗?(进行字符串的排序),
各位DFW,你能有好的解决方法吗?请赐教!谢谢。
 
利用TStringList的CustomSort方法排序,下面是一个例子:
//降序排列
function DescCompareFunc(List: TStringList; Index1, Index2: Integer): Integer;
begin
; Result := -CompareText(List.Strings[Index1],List.Strings[Index2]);
end;

//升序排列
function AscCompareFunc(List: TStringList; Index1, Index2: Integer): Integer;
begin
; Result := CompareText(List.Strings[Index1],List.Strings[Index2]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
; FSList := TStringList.Create;
; FSList.Add('a');
; FSList.Add('c');
; FSList.Add('b');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
; listbox1.Items.Assign(FSList);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
; FSList.CustomSort(DescCompareFunc);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
; FSList.CustomSort(AscCompareFunc);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
; FSList.Free;
end;

end.
 
我知道可以这样,我的意思是有没有最快的速度进行排序,字符串超过>10000喔。
 
字符串超过10000又如何,还不是要一个一个比较过来,我觉得
procedure TStringList.QuickSort(L, R: Integer; SCompare: TStringListSortCompare);
的算法已经是很快了,
除非这些字符串有些什么特征,可以进行进一步的优化.
 
TStringList 有QuickSort吗?请赐教。
 
我有一个老外写的排序单元,好像挺快的。
要的话给我EMAIL
我的Email:oldice@163.net
 
接受答案了.
 
后退
顶部