SortierAlgorithmen

Status
Nicht offen für weitere Antworten.

Silam

Mitglied
Hi leut, hänge an meiner alten Aufgabe immer noch fest :((((

jetzt hab ich ne Frage zu den Sortierlagorithmen, ich soll Namen die eingegeben werden sortieren und diese wieder anzeigen, meiner Lehrerin meinte es gäbe sortieralgorithmen wie Bubbelsort etc, alles schön und gut hab versucht mich schlau zu machen, bin aber net schlauer geworden :(
Ich hab zwar Beispiele gesehe konnte aber keines auf meine Aufgabe übertragen

und wenn ich die Namen dann sortiert habe, wie zeige ich diese dann an????


danke im voraus :)
 

masta // thomas

Bekanntes Mitglied
Was hast du denn versucht? Was ist dein Problem?
Wenn du nicht weißt, wie du einen String ausgibst, dann solltest du dir ganz dringend Java Grundlagen durchlesen, bevor du dich mit den Sortieralgorithmen auseinandersetzt.
 

Silam

Mitglied
nein meine Strings hab ich schon alle muss die halt nur noch sortieren
und mein Problem ist ya das sortieren wie kriege ich die Namen die vom Benutzer eingegeben werden sortiert,
es soll aber ohne Ein - un d Ausggabe sein, da die Klasse in der die Namen sortiert werden, nicht mit dem Benutzer kommuniziert

edit:
kurze Info zu meiner Aufgabe:
habe 3 klassen,
eine TeilnehmendePersonen (ist ganz feddisch)
eine Uebungsgruppen (hier werden die Namen alphabetisch sortiert und in gruppen eingeteilt, aber das mit den Gruppen jetzt mal nicht das mach ich danacht)
und eine Klasse Benutzerkommunikation(für Ein und Ausgabe, Methoden stehen schon nur noch net implementiert, da die Klasse Uebungsgruppen noch nicht fertig ist)
 

Drake

Bekanntes Mitglied
Hallo


nimm Wikipedia, schau dir verschiedene Sortieralgorythmen an, BubbleSort, QuickSort in seinen verschieden Varianten, vielleicht auch einen MergeSort. Solltest zu allen auch den passenden Pseudocode finden.
Da deine Listen nicht allzu groß sein werden und die Laufzeit somit für dich keine Bedeutung darstellt, entscheide dich für den BubbleSort, ist sehr einfach zu verstehen und zu implementieren. Den Pseudocode in Java umzusetzen ist wirklich nicht die Welt, solltest du daran scheitern, ist eine erste Lektüre der Insel empfehlenswert, ansonsten Poste einfach deinen Fortschritt und die Punkte woran es hapert.

mfg
Drake
 

Silam

Mitglied
Okkk ich habs konzentriert durchgelesen und verstanden, liegt wahrscheinlich an der Zeit....

ok das hier kam dabei raus ich hoffe es stimmt, konnte es noch nicht ausprobieren


Code:
public void sortierenNachNamen(TeilnehmendePersonen NachName) {
		int anzahlTeilnehmer = 0;
		TeilnehmendePersonen sortiere;
		
		for(int t = 0; t < Uebungsgruppen.MAX_ANZAHL_TEILNEHMER *
			Uebungsgruppen.MAX_ANZAHL_GRUPPEN; t++) {
				
			if(teilnehmer[t] != null) {
				anzahlTeilnehmer++;
			}
			
			for(t = 0; t < anzahlTeilnehmer; t++) {
				TeilnehmendePersonen ersterTeilnehmer = teilnehmer[t];
				TeilnehmendePersonen zweiterTeilnehmer = teilnehmer[t + 1];
			
			if(ersterTeilnehmer.nachName.compareToIgnoreCase(zweiterTeilnehmer.nachName) > 0) {
				sortiere = teilnehmer[t]; 
                                teilnehmer[t] = teilnehmer[t + 1]; 
                                teilnehmer[t + 1] = sortiere;
			}
			
			else if(ersterTeilnehmer.nachName.compareToIgnoreCase(zweiterTeilnehmer.nachName) == 0) {
				if(ersterTeilnehmer.name.compareToIgnoreCase(zweiterTeilnehmer.name) > 0) {
					sortiere = teilnehmer[t]; 
                                        teilnehmer[t] = teilnehmer[t + 1]; 
                                        teilnehmer[t + 1] = sortiere;
				}
			}
			}
		}
	}	
	
	public String getNachNameSortiert() {
		
		?????????????????
	}

wie bring ich jetzt die sortierten Namen in die Methode getNachNameSortiert (Methode mit den Fragezeichen)
Ich weiß ich muss jetzt diese sortiermethode und die Daten der Klasse teilnehmendePersonen aufrufen (siehe unten)
aber ich soll das so machen, dass ich dann auf alle auch zugreifen kann (in einem array und keine weiteren Strings)


hier mal meine Klasse TeilnehmendePersonen

Code:
public class TeilnehmendePersonen {
	
	String nachName;
	String name;
	String matrikelNummer;
	String semester;
	char gruppe;
	String daten;
	
	public TeilnehmendePersonen (String nachName, String name, String matrikelNummer ,
			 String semester , char gruppe){
		setNachName(nachName);
		setName(name);
		setMatrikelNummer(matrikelNummer);
		setSemester(semester);
		setGruppe(gruppe);
		}
	
	private void setNachName(String nachName){
		this.nachName = nachName;
	}
	
	private String getNachName(){
		return nachName;
	}
	
	............................. // geht so weiter mit allen

	public String toString(){
		return ("" + getNachName() + getName() + getMatrikelNummer() + 
				getSemester() + getGruppe());
	}
}
 

Drake

Bekanntes Mitglied
Hallo

vieleicht bist du ja schon weiter gekommen, dein Ansatz war ja schon in Ordnung. Nachdem ich mir eine 'Auszeit' im RL genommen habe - so ein Tag Documenta tut ja auch ganz gut - gehts jetzt weiter.

Erzeuge erstmal ein Objekt deiner teilnehmenden Personen.

Code:
private TeilnehmendePersonen[] personen = new TeilnehmendePersonen[];

befülle diesen dann mit Inhalt. Kannst ja erstmal auf das einlesen verzichten und einen Testarray erzeugen

Code:
this.personen = new TeilnehmendePersonen[3];

this.personen[0]  = new TeilnehmendePersonen("Mustermann", "Max", "123456",
          "4" , 'c');
this.personen[1]  = new TeilnehmendePersonen("Doe", "John", "123457",
          "2" , 'c');
this.personen[2]  = new TeilnehmendePersonen("Fritz", "Walter", "123458",
          "2" , 'a');

Und nun kommt das sortieren, da müsstest du auf jedenfall noch zwei, drei Änderungen vornehmen, u.a. auch wegen meiner Anpassungen

Code:
public void sortierenNachNamen( {
      TeilnehmendePersonen tmpPerson;
      boolean vertauscht = false;
    
     do {
        for(int i = 0; i < this.personen.length - 1; i++ {
          //vergleiche this.personen[i].getNachname mit this.personen[i + 1].getNachname mit
         //wenn vertauscht werden muss, gib tmpPerson den Inhalt von this.personen[i + 1]
         //danach this.personen[i + 1] den von this.personen[i] und this.personen[i] den von tmpPersonen
         //und setze vertauscht auf true;
       }
        
     }
     while(!vertauscht);
}

Wenn du das hingekriegt hast, kannst du deine sortiere Methode nach belieben erweitern und einen Parameter übergeben nach was du sortieren möchtest, Name, MatNr. ect. sind dann nur noch kleinere Eingriffe.

mfg
Drake
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben