Merhaba, delphi'deki en küçük ve en büyük sayıyı nasıl bulabilirim?Dizideki en küçük ve en büyük sayı nasıl bulunur?
varsayalım Bir dizide saklanan 10 farklı numaralarına sahip:
nasıl bulabilirim benim dizide büyük sayı ve en küçük sayılar?
Merhaba, delphi'deki en küçük ve en büyük sayıyı nasıl bulabilirim?Dizideki en küçük ve en büyük sayı nasıl bulunur?
varsayalım Bir dizide saklanan 10 farklı numaralarına sahip:
nasıl bulabilirim benim dizide büyük sayı ve en küçük sayılar?
Dizide doğrusal bir şekilde basitçe döngü yapın. Min değeri ve maksimum değerler için bir değişken tutun. Dizideki her iki değeri de ilklendirin. Daha sonra, her eleman için, bu eleman, sırasıyla min veya maksimum değerinden daha küçük veya daha büyükse, minimum veya maksimum değeri güncelleyin.
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;
Açıkçası bu kod Sayısı> 0 varsayar.
MinValue ve MaxValue yordamlarını eşit olarak Matematik biriminden kullanabileceğinizi unutmayın.
Önceki bulunan min ve maks.
İşte bir kod parçacığı. Açıklamanızın ardından, Int64'ü kullanmak için kodu düzenledim.
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;
O Math.pas içinde MaxIntValue olarak uygulandığını ilginçtir:
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;
Bu uygulama, David'in cevap benzeyen, başlangıç değeri olarak ilk dizi değerini kullanır. Bu, dizinin en az bir öğeye sahip olduğunu varsayar. Ayrıca döngü, Düşük (Veri) + 1'den başlayıp gereksiz bir karşılaştırmayı kaydedebileceğine de dikkat edin. Tanımladığınız veriler için, her bir dizide 100 elemanla, en iyi ihtimalle% 1'lik bir hız artışı elde edersiniz.
Performans önemli değilse, MinIntValue ve MaxIntValue daha özlü olacaktır. Eğer kendi yerinizi yuvarlarsanız, o zaman sadece iki kere yerine bir kere dizinin üzerinden yineleyin.
üzerindeki kodu kullanın. David, biçimlendirme için teşekkürler. –
no dizim int64'tür .. –
Kod şimdi Int64 olarak değiştirildi. –
Sanırım aynı anda yazıyorduk! Başarımızı daha iyi seviyorum, fakat Delphi'nin hangi sürümünün desteklenip desteklenmediğine bağlı olmasına rağmen, daha kompakt yapıları tercih ederim. –
+1 'MinValue' ve' MaxValue' için. Ayrıca, ['MinIntValue'] (http://docwiki.embarcadero.com/VCL/en/Math.MinIntValue) ve [' MaxIntValue'] (http://docwiki.embarcadero.com/VCL/en/Math. MaxIntValue). – NGLN
@ngln bunun için teşekkürler, tabii ki haklısınız, kaçak nokta verileriyle alışkanlıkla çalışıyorum. –