回答
德爾福沒有提供這樣的功能,不在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'對浮點數據數組進行操作 –