# Lexikographische Sortierung eines Strings



## Lacritz (1. Dez 2013)

Heyho ich habe mal wieder ein Problem

Ich will ein Programm schreiben welches einen eingebenen String (ausschließlich aus Buchstaben) lexikographisch sortiert; 

habe bisher nicht wirklich viel - einige Fehler sind drin die ich zwar betiteln kann - jedoch bisher nicht weiß wie ich sie ausmerze

Schritt 1:

temp länge = länge vom string

in der Schleife:

Schritt 1:

max String = erste freie Stelle des Arrays

Schritt 2:

max String = 0

Schritt 3: Strings des Arrays vergleichen und sortieren.

die Schleife soll sich dann wiederholen bis alles abgearbeitet ist

Ausgabe:

der String = der Array


```
public final class SortierenvonArrays {

	public static void sort(String[] strings) {

		int length = strings.length();
		int[] temp = new int[length];
		int zaehler = 0;
		int pruefer = 0;
		int laenge = length;
		while (zaehler <= laenge) {
			temp[zaehler] = // hier muss der maximal Wert von String hin
			// hier muss max string = 0 gesetzt werden

			pruefer = strings.equalsIgnoreCase(temp);
			if (pruefer == -1) {
				int x;
				x = temp[zaehler];
				temp[zaehler] = temp[zaehler + 1];
				temp[zaehler] = x;

				// soll quasi vergleichen (wenn die sortierung nicht stimmt ,
				// den wert nach vorne schieben
				// - wenn sie stimmt soll das nicht passieren;
			}

			zaehler++;
			length--;
		}

		return;
	}

	public static void main(String[] args) {
		String string = JOptionPane.showInputDialog("String= ");
	}

}
```

MfG Lacritz


----------



## knilch (1. Dez 2013)

Hi,
Falls es Dich interessiert: zum Sortieren steht in der API java.util.Arrays eine sort- Methode zur Verfügung. Diese sortiert Dein Array mit Strings. 


```
import java.util.Arrays;

public class SortTest {
	
	private static String[] strings = { "Das", "ist", "ein", "Test", "zum", "Sortieren", "von", "Strings" };
	
	public static void main(String[] args) {
		System.out.println("Vor Sortierung: ");
		for (int i = 0; i < strings.length; i++) {
			System.out.print(strings[i] + " ");
		}
		
		Arrays.sort(strings);
		
		System.out.println("Nach Sortierung: ");
		for (int i = 0; i < strings.length; i++) {
			System.out.print(strings[i] + " ");
		}
		
	}

}
```


----------



## Lacritz (1. Dez 2013)

Muss leider wie oben beschrieben funktionieren (ist eine Aufgabe für die Uni... aber da unser Dozent lieber erst alles abfragt und dann lehrt ist das nicht so einfach... bei Strings tu ich mich allgemein noch sehr schwer...


----------



## knilch (1. Dez 2013)

Hi,
Ich sehe es so, dass die eigentliche Aufgabe ist, ein Array mit Strings zu sortieren.
Mit einem einfachen Sortier- Algorithmus kannst Du das String- Array sortieren.
z.B. Bubble Sort:

```
public static void sort(String[] strings) {
    	String temp = "";
		boolean sorted = false;
    	
		do {
			sorted = true;
			for (int i = 0; i < strings.length-1 ; i++) {
				if (strings[i].compareTo(strings[i+1]) > 0) {
					sorted = false;
					temp = strings[i];
					strings[i] = strings[i+1];
					strings[i+1] = temp;
				}
			}
		} while(!sorted);
    			 	
    }
```
Ansonsten gibt es noch viele andere Sortier- Algorithmen. (Quicksort, Shell-Sort etc.)


----------



## Lacritz (1. Dez 2013)

Es muss leider exakt in den oben genannten Schritten gemacht werden (ist quasi eine wiedergabe der Aufgabenstellung... da bleibt nicht viel Spielraum)


----------



## knilch (1. Dez 2013)

Ok.
Noch eine Frage: was genau macht die Methode equalsIgnoreCase()? Diese hast Du nicht geposted. Könnest Du diese mal ins Forum stellen?

Thanks


----------



## Lacritz (1. Dez 2013)

die vergleicht 2 strings (kann man so eingeben - hab ich als befehl für strings kennen gelernt) - ignoriert zusätzlich groß und kleinschreibung also TEST ist gleich mit test


----------

