Überprüfen ob Array sortiert is!

hornylist

Mitglied
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?
 
Irgendwie fehlt die Rückgabe für unsortiert. Ich würde 2 Abfragen machen, einfach den index hochzählen und immer einen Vergleich machen.
 
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!
Code:
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
 
Da hängt nix...
Code:
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]) {

                    }

}
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
 
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 :confused:

public static boolean isSorted (double[] da) {
Code:
		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
 
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
 
die methode soll true zurückgeben wenn das array aufsteigen oder absteigend sortiert ist! anderenfalls, quasi bei nichtsortierung, soll sie false zurückgeben!
 
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.

Java:
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
 
Zurück