回答
简单地以线性方式遍历数组。为最小值保留一个变量,为最大值保留一个变量。初始化为数组中的第一个值。然后,对于每个元素,如果该元素分别小于或大于最小值或最大值,则更新最小值或最大值。
minval := a[0];
maxval := a[0];
for i := 1 to Count-1 do
begin
if a[i]<minval then
minval := a[i]
else if a[i]>maxval then
maxval := a[i];
end;
很明显,这段代码假设Count> 0。
请注意,您可以同样使用Math单元中的MinValue和MaxValue例程。
迭代遍历数组,比较先前找到的最小值和最大值。
这是一段代码片段。澄清之后,我编辑了使用Int64的代码。
Min := High(Int64);
Max := Low(Int64);
for ThisNumber in MyArray do
begin
if ThisNumber < Min then
begin
Min := ThisNumber;
end
if ThisNumber > Max then
begin
Max := ThisNumber;
end;
end;
很有趣的是,在MaxIntValue作为Math.pas实现:
function MaxIntValue(const Data: array of Integer): Integer;
var
I: Integer;
begin
Result := Data[Low(Data)];
for I := Low(Data) + 1 to High(Data) do
if Result < Data[I] then
Result := Data[I];
end;
此实现,类似于大卫的回答,使用第一个数组值作为初始值。这假定数组至少有一个元素。还要注意,循环可以从Low(Data)+ 1开始并保存一个不必要的比较。对于您所描述的数据,每个阵列中有100个元素,最多可以提高1%的速度。
如果性能并不重要,MinIntValue和MaxIntValue会更加简洁。如果你推出自己的游戏,那么你只是遍历数组而不是两次。
谢谢大卫,格式。 –
不是我的数组是int64 .. –
现在代码更改为Int64。 –
- 1. 如何在数组中找到最大和最小数字c
- 2. 如何找到一个数组的最大值和最小值
- 3. 如何查找数组中的最大和最小日期?
- 4. 如何在随机整数数组中找到最小和最大的元素?
- 5. 如何查找循环中最小和最大的数字?
- 6. 如何查找数组的最小和最大元素?
- 7. 如何从数组中找到最大的gameobject大小?
- 8. 如何查找数组中的最大负数和最小正数
- 9. 如何使用awk查找最大和最小的数字?
- 10. 查找最大和最大的数字
- 11. 查找具有最大和最小元素数的数组
- 12. 如何从浮点数组中找到最小值和最大值?
- 13. Python:我如何在子数组元素中找到最小值和最大值?
- 14. 用数组找到和,最小值,最大值
- 15. 数组的最小值和最大值?
- 16. 数组的最大值和最小值
- 17. 最小和最大的多维数组
- 18. 如何找到一个二维数组的最大值和最小值
- 19. 在javascript中查找带有缩小功能的最小和最大数组数
- 20. 如何切换数组中的最大和最小元素?
- 21. 阵列的最大和最小数字
- 22. 最大和最小的数字。 python
- 23. 使用索引的最小和最大数字数组?
- 24. 从bash数组中查找最大值和最小值
- 25. 查找java数组中的最小/最大数
- 26. 找到表中数据的最小最大值和平均值
- 27. 从最小到最大排序数组
- 28. 查找数组的最小值和最大值
- 29. 如何从数组中提取最大值和最小值?
- 30. 最小/最大字符数
我想我们在同一时间打字!我更喜欢你的初始化,但我更喜欢更紧凑的for..in结构,虽然它取决于他是否支持Delphi的哪个版本。 –
+1对于'MinValue'和'MaxValue'。还有['MinIntValue'](http://docwiki.embarcadero.com/VCL/en/Math.MinIntValue)和['MaxIntValue'](http://docwiki.embarcadero.com/VCL/en/Math)。 MaxIntValue)。 – NGLN
@ngln谢谢你,你当然是对的,我习惯使用浮点数据。 –