# Überprüfen ob Array sortiert is!



## hornylist (12. Juni 2007)

Eine Frage!
Wie kann ich ganz einfach überprüfen ob die einträge in einem Array aufsteigend oder absteigend sortiert sind, und dann true oder false zurückgeben?


----------



## bernhard2211 (12. Juni 2007)

Irgendwie fehlt die Rückgabe für unsortiert. Ich würde 2 Abfragen machen, einfach den index hochzählen und immer einen Vergleich machen.


----------



## MeinerEiner_80 (12. Juni 2007)

Moin!
Das Thema hatten wir erst vor kurzem hier:
http://www.tutorials.de/forum/java/276299-array-sortieren.html

Wenn das ein Übungszettel von der Uni ist, bist du aber recht spät dran, im Vergleich zu deinem Kommilitone?! 

*grüssle*
MeinerEiner


----------



## hornylist (13. Juni 2007)

ja hab mir den thread angeschaut passt auch alles soweit, hab aber nun wieder ein problem!

bei mir gibt er immer true zurück! er scheint in der ersten schleife hängenzubleiben!

```
public static boolean isSorted (double[] da) {
		boolean sortierung = true;
			if (da[0] < da[1]) {
					for ( int i=0; i<da.length-1; i++) {
						if ( da[i] > da[i+1]) {
					}

						else {
							for ( int j=0; j<da.length-1; j++) {
								if (da[j] < da[j+1]) {
							}
							else {
								sortierung = false; }
						}
					}
				}

		}
		return sortierung;
}//Ende isSorted

	public static void main(String[] args) {
		double werte[] = {-1, -4, 66,99,-100};

	System.out.println("Das Minimum des Arrays ist: " +minimum(werte));
	System.out.println("Der Durchschnittswert aller Werte im Array ist: " +average(werte));
	System.out.println("Arraysortierung: " +isSorted(werte));

	}// Ende main

}// Ende class
```

warum macht er das....  ich will dass er in der main ausgibt true oder false macht er aber nicht. er gibt immer true zurück


----------



## MeinerEiner_80 (13. Juni 2007)

Da hängt nix...


hornylist hat gesagt.:


> ```
> public static boolean isSorted (double[] da) {
> boolean sortierung = true;
> if (da[0] < da[1]) {
> ...


U.a. ist hier ein Fehler.. wo setzt du denn hier deine Varaible auf false, wenn die sortierung nicht stimmt
Vergleiche das mal mit den bereits gennanten Thread da steht bereits alles korrekt drin..

*grüssle*
MeinerEiner


----------



## Sebastian Seidelmann (13. Juni 2007)

ansonsten würde vlt. das elementare sortierverfahren "bubble sort" weiterhelfen! immerhin ist da ja auch schon eine "sortier abfrage" (^^) drin.


----------



## hornylist (13. Juni 2007)

ok es geht jetzt... hab nur noch den kleinen fehler wenn ich -1,-2,-4,5 eingeb sagt er es is richtig sortiert! ist es aber nicht!
bei 1,2,3,4,-5 sagt er es is falsch sie wies sein muss!!
find aber den fehler nicht!
komisch 

public static boolean isSorted (double[] da) {

```
boolean sortierung = true;
			if (da[0] < da[1]) {
					for ( int i=0; i<da.length-1; i++) {
						if ( da[i] > da[i+1]) {
					}

						else {
							for ( int j=0; j<da.length-1; j++) {
								if (da[j] < da[j+1]) {
							}
							
							else {
								sortierung = false; }
						}
					}
				}

		}
		return sortierung;
}//Ende isSorted
```


----------



## zerix (13. Juni 2007)

Hallo,

nur mal so ne Frage, soll die Methode nur true zurückgeben wenn das Array aufsteigend sortiert ist oder auch bei absteigender Sortierung?

MFG

zEriX


----------



## hornylist (13. Juni 2007)

die methode soll true zurückgeben wenn das array aufsteigen oder absteigend sortiert ist! anderenfalls, quasi bei nichtsortierung, soll sie false zurückgeben!


----------



## zerix (13. Juni 2007)

Hier hab ich mal eine Lösung, die auch um einiges schneller ist als deine. Bei deiner Lösung wäre hätte die Methode bei einem Array mit 5 Feldern 25 durchläufe gehabt. Bei meiner Lösung hat sie maximal 5 durchläufe.


```
public static boolean isSorted(double d[]){
	boolean sortiertAufsteigend = true;
	boolean sortiertAbsteigend = true;
		
	boolean bool = false;
	for (int i = 0; i < d.length-1; i++) {
		if(d[i] > d[i+1] && sortiertAufsteigend){
			sortiertAufsteigend = false;
			if(bool){
				break;
			}
			bool = true;
		}
		else if(d[i] < d[i+1]&& sortiertAbsteigend){
			sortiertAbsteigend = false;
			if(bool){
				break;
			}
			bool = true;
		}
	}
	return sortiertAbsteigend || sortiertAufsteigend;
}
```

MFG

zEriX


----------



## hornylist (13. Juni 2007)

ein dickes dankeschön an dich! haut ab wie schmitz katze!
merce


----------



## zerix (13. Juni 2007)

Das Problem bei der Lösung in dem anderen Thread ist, dass es nicht berücksichtigt, dass die Werte auch gleich sein können. 

MFG

zEriX


----------

