पिछले मिले न्यूनतम और अधिकतम की तुलना में सरणी के माध्यम से Iterate।
यहां एक कोड स्निपेट है। आपके स्पष्टीकरण के बाद, मैंने 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;
यह ध्यान रखें कि Math.pas में MaxIntValue के रूप में कार्यान्वित किया जाता है दिलचस्प है:
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;
यह कार्यान्वयन, डेविड के जवाब के लिए इसी तरह, प्रारंभिक मूल्य के रूप में पहली सरणी मान उपयोग करता है। यह मानता है कि सरणी में कम से कम एक तत्व है। ध्यान दें कि लूप तब कम (डेटा) + 1 पर शुरू हो सकता है और एक अनावश्यक तुलना को बचा सकता है। आपके द्वारा वर्णित डेटा के लिए, प्रत्येक सरणी में 100 तत्वों के साथ, आपको सबसे अच्छा 1% गति सुधार मिलेगा।
यदि प्रदर्शन कोई फर्क नहीं पड़ता तो MinIntValue और MaxIntValue अधिक संक्षिप्त होगा। यदि आप अपना खुद का रोल करते हैं, तो आप केवल दो बार की बजाय सरणी के माध्यम से फिर से चल रहे हैं।
स्रोत
2011-08-20 12:12:48
मुझे लगता है कि हम एक ही समय में टाइप कर रहे थे! मुझे आपकी शुरुआत बेहतर पसंद है, लेकिन मैं अधिक कॉम्पैक्ट for.in.in संरचना पसंद करता हूं, हालांकि यह डेल्फी के किस संस्करण पर निर्भर करता है कि यह समर्थित है या नहीं। 'MinValue' और 'MaxValue' के लिए –
+1। ['MinIntValue'] भी है (http://docwiki.embarcadero.com/VCL/en/Math.MinIntValue) और [' MaxIntValue'] (http://docwiki.embarcadero.com/VCL/en/Math। MaxIntValue)। – NGLN
@ngln इसके लिए धन्यवाद, आप सही हैं, मैं आदत से फ़्लोटिंग पॉइंट डेटा के साथ काम करता हूं। –