回答
德尔福没有提供这样的功能,不在Delphi 6中,除非我错了,甚至在现代的Delphi版本中都没有。
没有关于数组内容的任何信息,您必须检查每个元素以查找最大值以及相应的索引。
uses
Math; // MaxDouble is defined by this unit
function IndexOfMaxValue(const x: array of Double): Integer;
var
Index: Integer;
MaxValue: Double;
begin
Result := -1;
MaxValue := -MaxDouble;
for Index := 0 to high(x) do begin
if x[Index]>MaxValue then begin
Result := Index;
MaxValue := x[Index];
end;
end;
end;
注意,在并列的情况下,即与所述最大值超过一个元件,该函数将返回第一个这样的元素的索引。
正如@LURD指出的那样,如果数组中的所有元素都是-MaxDouble
那么函数返回-1。这可以这样解决:
function IndexOfMaxValue(const x: array of Double): Integer;
var
Index: Integer;
MaxValue: Double;
begin
if high(x) = -1 then begin
Result := -1;
end else begin
Result := 0;
MaxValue := x[0];
for Index := 1 to high(x) do begin
if x[Index]>MaxValue then begin
Result := Index;
MaxValue := x[Index];
end;
end;
end;
end;
ok这就是我所做的。那么 – bbd
在比较双精度时,我总是更喜欢使用CompareValue(如果在Delphi 6中可用)比较运算符。 –
@SebastianProske我不会。在这种情况下使用绝对是错误的,因为'MaxValue'使用了比较运算符。我怀疑你的评论是基于对浮点运算的模糊评估。例如,如果您使用'CompareValue'来编写这些函数,那么函数的输出将取决于元素的顺序。也就是说,您可以对数组进行洗牌并返回不同的值。你不会想这样做。 –
- 1. 如何查找具有最大值的数组索引
- 2. 如何找到数组索引的最大尺寸?
- 3. 如何在Scala中找到列表中最大值的索引?
- 4. 数组最大值的索引
- 5. C#如何搜索数组中的索引以找到值
- 6. 如何在MATLAB中找到最大值和最小值的索引?
- 7. 如何找到一个数组的最大值和最小值
- 8. 如何在堆栈中找到最小或最大的索引
- 9. 如何查找数组的最大值?
- 10. 如何找到数组中最后一项的索引?
- 11. vb6 - 如何找到控制数组中的最大元素索引?
- 12. 在数组中找到最大值并在javascript中找到最大值
- 13. 在最大值列表中查找最大值和索引?
- 14. 如何查找具有最大值的多维数组的索引
- 15. 如何在找到最大值后返回元素索引
- 16. 如何一次获取数组的索引和最大值?
- 17. 如何找到数组的索引?
- 18. 如何在一维数组中找到多个最小值的索引?
- 19. 查找二维数组中的最大数字索引
- 20. 我如何找到数组中的最大值?
- 21. 如何找到数组中最大值的位置?
- 22. 找到最大值时索引超出矩阵的维数
- 23. 如何在数组中找到找到的id的索引
- 24. 如何找到数组中第二大的数字,但返回值出现的最后一个索引?
- 25. 如何找到最大值?
- 26. 如何获得数组中最大数目的索引?
- 27. 如何找到数组中最小和最大的数字?
- 28. C#如果找到其他索引,如果存在重复值(查找最高数组值和索引)?
- 29. 如何在多维数组中找到最大值?
- 30. 如何在多维数组中找到最大值
什么数据类型的数组? –
@GerryColl'MaxValue'对浮点数据数组进行操作 –