回答
德尔福没有提供这样的功能,不在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. C#如何搜索数组中的索引以找到值
- 3. 如何在MATLAB中找到最大值和最小值的索引?
- 4. 如何找到一个数组的最大值和最小值
- 5. 如何找到数组中最后一项的索引?
- 6. vb6 - 如何找到控制数组中的最大元素索引?
- 7. 在数组中找到最大值并在javascript中找到最大值
- 8. 如何查找具有最大值的多维数组的索引
- 9. 如何找到数组的索引?
- 10. 如何一次获取数组的索引和最大值?
- 11. 如何在一维数组中找到多个最小值的索引?
- 12. 找到最大值时索引超出矩阵的维数
- 13. 查找二维数组中的最大数字索引
- 14. 如何找到数组中最大值的位置?
- 15. 我如何找到数组中的最大值?
- 16. 如何找到最大值?
- 17. 如何找到数组中最小和最大的数字?
- 18. Java数组:找到数组中存储值的索引。是
- 19. 如何在多维数组中找到最大值
- 20. 如何在多维数组中找到最大值?
- 21. 如何在数组数组中找到元素的索引?
- 22. 在MATLAB中查找一行数组的最大索引
- 23. 如何在MATLAB的矩阵列中找到最大值的索引?
- 24. 如何在Perl 6的列表中找到最大值的索引?
- 25. 查找数组中的索引和值
- 26. 在VBA中查找多维数组中最小值的索引
- 27. 如何找到Tensorflow最大值的索引,但该值是重复
- 28. Java:查找数组中的最大值
- 29. 查找数组中的最大值
- 30. 我将如何找到这个数组索引的位置,也是最小值?
什么数据类型的数组? –
@GerryColl'MaxValue'对浮点数据数组进行操作 –