回答
簡單地以線性方式遍歷數組。爲最小值保留一個變量,爲最大值保留一個變量。初始化爲數組中的第一個值。然後,對於每個元素,如果該元素分別小於或大於最小值或最大值,則更新最小值或最大值。
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謝謝你,你當然是對的,我習慣使用浮點數據。 –