use*_*073 5 delphi structure delphi-2010
我需要按排序顺序保留前十个值.我的数据结构是:
TMyRecord = record
Number: Integer;
Value: Float;
end
Run Code Online (Sandbox Code Playgroud)
我将计算一堆浮点值.我需要保持前10个浮动值.每个值都有一个相关的数字.我想添加"sets"...如果我的浮点值高于前10位中的一个,它应该将自己添加到列表中,然后"旧"数字10(现在为11)被丢弃.我应该能够以(浮点值)排序顺序访问列表...
它几乎就像一个TStringList,它维护排序顺序....
Delphi 2010中是否已经内置了这样的内容?
您可以使用通用列表Generics.Collections.TList<TMyRecord>和插入排序的组合.
您的数据结构是这样的
TMyRecord = record
Number: Integer;
Value: Float;
end;
var
Top10: TList<TMyRecord>;
Run Code Online (Sandbox Code Playgroud)
您需要使用Generics.Collections获取通用列表.
像这样实例化:
Top10 := TList<TMyRecord>.Create;
Run Code Online (Sandbox Code Playgroud)
使用此功能添加到列表:
procedure Add(const Item: TMyRecord);
var
i: Integer;
begin
for i := 0 to Top10.Count-1 do
if Item.Value>Top10[i].Value then
begin
Top10.Insert(i, Item);
Top10.Count := Min(10, Top10.Count);
exit;
end;
if Top10.Count<10 then
Top10.Add(Item);
end;
Run Code Online (Sandbox Code Playgroud)
这是插入排序的简单实现.使该算法有效的关键是确保列表始终有序.
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |