# kleinste Zahl im Array finden



## Schmolleg (5. Dez 2007)

Hallo Leute !

Ich ahbe ein Array welches 20 Elemente hat. Die 20 Elemente sind zahlen und werden zufällig von 1 bis 10000 erzeugt.
Jetzt möchte ich die kleinste Zahl herausfinden aber irgendwas mach ich falsch.

int min = 1;

       for(int i=1; i < zahlen.length; i++)
       {
           if(zahlen_ <= min)
           {
              min = zahlen;
               System.out.println(min);
            }
            else
            {
              min++;
            }
        }

Brauche drigend Hilfe ist Hausaufgabe für morgen  :?_


----------



## H3llGhost (5. Dez 2007)

Du musst das min auf 100000 setzen ...
Weil er soll ja damit vergleichen:


```
if(zahlen[i] <= min)
```

Und hier ist min immer kleiner bzw. einmal gleich als zahlen_ ...

Was du hiermit bezwecken willst ist mir auch unklar:



		Code:In die Zwischenablage kopieren


 else
{
min++;
}


Als nach meiner Logik würde ich das dann nicht mehr brachen ..._


----------



## Guest (5. Dez 2007)

Ja aber wenn ich min auf 10000 setzte sind doch eh alle Zahlen kleiner als das min.
Kann ich mal ein Besipiel haben wie ich schreiben soll ? Ist echt extrem drigend.


----------



## ARadauer (5. Dez 2007)

ich hoff das ist nicht für ein studium, denn wenn du das nichts schaffst, schaffst du das studium nie!
das ist das standardbeispiel für die erste stunde. jetzt setz dich nochmal hin, nimm ein blatt papier und einen stift und geh das programm schritt für schritt durch!

also aufschreiben:

array zb (5,7,2,2,0,2,2...
index       0 1 2 3 4 5 6	

min = 1,i =1 zahlen.lengt = 20;

 also ist zahlen[1] (7) kleiner als 1? nein, also else zweig
	die 5 prüfen wir nicht??
	warum erhöst du jetzt min?

du siehst doch selber, dass da was nicht passt, oder?

----------
aber wenn das für die schule ist, und du sowieso nie programmieren willst ists ok. gibt auch andere berufe. hab auch französisch in der schule gehabt und war froh, dass ich die aufgaben abschreiben durfte. gibt wichteres für mich und sicher auch für dich

also hier:


```
int[] werte = {4,2,2,2,1,5};
        int min = Integer.MAX_VALUE;
        int pos = 0;
        for(int i = 0; i< werte.length; i++){
        	if(werte[i]<min){
        		pos = i+1;
        		min = werte[i];
        	}       	
        }
        System.out.println("Minimumg: "+min+" an Position:"+pos);
```


----------



## H3llGhost (5. Dez 2007)

Ich würde es so schreiben:


```
int min = 100001; //größtmöglichste Zahl + 1

for(int i=1; i < zahlen.length; i++)
{
 if(zahlen[i] < min)
 {
  min = zahlen[i];
  System.out.println(min);
 }
}
```

Die Plus 1 aus folgenden einfach Grund:
Du könntest ja auch theoretisch ein Array haben was nur mit 100000 gefüllt ist ...
Ist zwar mit dem Zufall unwahrscheinlich aber nicht unmöglich ...
Und dann wäre 100000 die kleinste Zahl aus diesem Grund + 1.

Ich hoffe du kannst es nachvollziehen ...


EDIT:
Da war wohl jemand schneller ... xD


----------



## ARadauer (5. Dez 2007)

ich find mein int min = Integer.MAX_VALUE; besser


----------



## H3llGhost (5. Dez 2007)

Wir sind beide gut ... ;-)


----------



## ARadauer (5. Dez 2007)

ok


----------



## Guest (5. Dez 2007)

Also es geht nur mit dem Beispiel von ARadauer.
Das hab ich aber wirklich schritt für schritt aufm Blatt und mim Debugger herausgefunden.

Danke erstmal.

Ist wirklich fürs Studium, aber bis jetzt hat ich nie Probleme und wir hatten schon viel schwierigere Sachen.
Hab heute irrgendwie nen Brett vorm Kopf :-(


----------



## Backwardsman (5. Dez 2007)

warum so kompliziert mit .MIN bzw. .MAX?? ;-)


```
int pos = 0;
int min = zahlen[pos];
for(int i=1; i < zahlen.length; i++) {
    if (zahlen[i] < min) {
        min = zahlen[i];
        pos = i;
    }
}
```


----------



## Der Müde Joe (5. Dez 2007)

Backwardsman hat gesagt.:
			
		

> warum so kompliziert mit .MIN bzw. .MAX?? ;-)




```
Arrays.sort(intArray);
int min = intArray[0];
```

 :lol: 

(ohne über Effizienz und so nachzudenken)


----------



## Backwardsman (5. Dez 2007)

ARadauer hat gesagt.:
			
		

> ich hoff das ist nicht für ein studium, denn wenn du das nichts schaffst, schaffst du das studium nie!


was ist denn das für ein blöder spruch?! selbst wenn es sich um ein informatik-studium handelt ist es absolut keine schande, wenn man so was auf anhieb nicht hinbekommt. man kann schließlich auch erfolgreich informatik studieren ohne vor dem studium auch nur eine zeile programmiert zu haben!


----------



## maki (5. Dez 2007)

Der Müde Joe hat gesagt.:
			
		

> Backwardsman hat gesagt.:
> 
> 
> 
> ...


Hi Joe,

das dachte ich auch, bis Marco13 mich eines besseren belehrt hatte:
Das Array wird umsortiert, d.h. dasdanach die Werte in anderer Reihenfolge drinnstehen.
So etwas würde man nicht von einer Funktion erwarten, welche "nur" die Min oder Max werte findet, führt zu schwer zu findenden Fehlern, und ist langsamer als nötig


----------



## Backwardsman (5. Dez 2007)

Der Müde Joe hat gesagt.:
			
		

> Backwardsman hat gesagt.:
> 
> 
> 
> ...



naja aber jetzt ist die position in der ursprünglichen folge verloren gegangen... man kann also nicht mehr sagen "das x-te element ist das kleinste"


----------



## Der Müde Joe (5. Dez 2007)

> So etwas würde man nicht von einer Funktion erwarten



naja...ist auch keine Funktion sondern nur 2 Zeilen. und war auch eher als Scherz gemeint.
Darum ein  :lol: 

Kommt halt immer darauf an, was man machen will, muss, soll, darf...


----------

