2016-07-12 14 views
3

Ich habe bereits den Code für eine Prozedur notiert, die ein ankommendes Array von Doubles durch Normalisierung ändert. Um das Zahlenfeld zu normalisieren, musste ich jede Zahl durch den Maximalwert im Array teilen. Allerdings zwingt mein Code mir System.LinqProzedur, die ankommendes Array von double durch Normalisieren ändert (ohne Linq zu verwenden)

Hier ist mein Code zu implementieren:

public void Test9(double[] numbers) 
{ 
    double MaximumNumber = numbers.Max(); 
    for (int i = 0; i < numbers.Length; i++) 
    { 
     numbers[i] = numbers[i]/MaximumNumber; 
    } 
} 

Meine Frage, wie kann ich die gleiche Lösung erreichen, ohne using System.Linq; an der Spitze des Programms umzusetzen.

Antwort

3

Go über die Anordnung und den Maximalwert bekommen zuerst (vergewissern Sie sich, ob es überprüfen Elemente im Array sind erste, so prüfen numbers.Length > 0):

double max = numbers[0]; 

for (int i = 1; i < numbers.Length; i++) 
{ 
    if (numbers[i] > max) 
    { 
     max = numbers[i]; 
    } 
} 
1

einfach das Maximum finden, indem das Array iterieren

public void Test9(double[] numbers) 
{ 
    // Find the maximum without linq 
    double maxNumber = double.MinValue; 
    for (int i = 0; i < numbers.Length; i++) 
    { 
     if(numbers[i] > maxNumber) 
      maxNumber = numbers[i]; 
    } 

    for (int i = 0; i < numbers.Length; i++) 
    { 
     numbers[i] = numbers[i]/maxNumber; 
    } 
}