Selection-Sort-Algorithmus

Tina87

Mitglied
Hallo,
ich hab einen Algorithmus programmiert, der Zahlen sortieren soll nach dem selection-sort.
als erstes hätte ich gern gewusst, ob dieser wirklich dem prinzip des selection sort entspricht. bin mir da nicht so sicher. oder, ob es vielleicht was besseres gibt.
hatte nämlich mal in ner vorlesung ein programm gesehen mit "int pos" und "int min", kann mich aber nicht mehr genau erinnern.

und dann wollte ich, dass das programm nur einen bestimmten teil eines arrays sortiert, also von einem startpunkt bis zu einem endpunkt (einschließlich start und ende).
weiß aber irgendwie nicht wie ich das formulieren soll.

Java:
public class Test2 {
   public static void main(String[] args) {
       int [] daten = { 12, 4, 66, 34, 62, 2, 3, 7, 1, 678 };
       int start = daten[2];
       int end = daten[6];
       sortieren(daten, start, end);
   }
   
   public static void sortieren(int[] daten, int start, int end) {
      
      //SelectionSort-Algorithmus
      for(start = 0; start < daten.length; start++) {
         for(end = start; end < daten.length; end++) {
            if(daten[end] < daten[start]) {
               int temp = daten[end];
               daten[end] = daten[start];
               daten[start] = temp;
            }
         }
      }
      
      //das hier ist nur die Ausgabe des SelectionSort-Algorithmus
      for(start = 0; start < daten.length; start++) {
         System.out.print(daten[start]+ ",");
      }
   }
}
 

eRaaaa

Top Contributor
Also wenn ich mir die Beschreibung bei Wikipedia anschaue, würde ich sagen (bitte korrigiert mich), dass das nicht ganz der Selectionsort ist :D Du tauschst öfters als eig. nötig und gewollt. Du müsstest in deiner 2. Schleifen, eig. immer nur das Minimum/Maximum ermitteln und dieses dann mit dem "aktuellen Index" tauschen.

http://de.wikipedia.org/wiki/Selectionsort hat gesagt.:
Sei S der sortierte Teil des Arrays und U der unsortierte Teil. Am Anfang ist S noch leer, U entspricht dem ganzen Array. Das Sortieren durch Auswählen funktioniert so:

Suche das kleinste Element in U und vertausche es mit dem ersten Element.

Und noch was: Du übergibst der Methode ein start und ende- Integer...was hat das für einen Sinn, wenn du diese zu Beginn wieder auf 0 setzt? :D
 

klein-odd

Aktives Mitglied
Kannst Du das so anfangen, dass Du in der Menge von n- Zahlen (egal, ob integer oder double)
zwei Indizes start_index und end_index bestimmst ?

Damit teilst Du die Gesamtmenge von n - Elemensten in :

- Kopfteil (Elemente der Ursprungsmenge mit Indizes von 0 bis (start_index-1))
- Rumpf (Elemente der Ursprungsmenge mit Indizes von start_Index bis end_index) - der Rumpf soll doch sortiert werden,oder ?
- Schwanz (Elemente der Ursprungsmenge mit Indizes von (end_Index+1) bis n)

dann sortierst Du den Rumpf und klebst Du danch sozusagen alle drei Teile wieder zusammen
oder habe ich etwas übersehen ?
 

Tina87

Mitglied
also hab den selectionsort nochmal komplett neu gemacht, ohne jetzt an start und ende zu denken:
Java:
public class Test3
{
    public static void main (String [] args) {
        
        int [] daten = {2,7,3,9,1,5,7,4};
        sortieren(daten); 
        
    }
    
    static void sortieren (int [] daten) {
        
        for (int pos= 0; pos < daten.length-1; pos ++ ) {
            
            int min = pos;
            
            for (int i = pos+1; i < daten.length; i ++ ) {
                if (daten[i]<daten[min]) {
                    
                    min=i;
                }
            }
            
            int hilf=daten[pos];
            daten[pos]=daten[min];
            daten[min]=hilf;
        }
    }
}

1.) ist das jetzt besser so und auch richtig?
2.) wie gebe ich die zahlenfolge jetzt aus? system.out.println geht doch nicht so einfach,oder?
3.) das von "klein-odd" hab ich nicht verstanden...kann mir also nochmal jemand erklären, wie ich ein start und ein ende festlege, wo einschließlich den zahlen, dazwischen nur sortiert wird?
 

eRaaaa

Top Contributor
1.) ist das jetzt besser so und auch richtig?
2.) wie gebe ich die zahlenfolge jetzt aus? system.out.println geht doch nicht so einfach,oder?
3.) das von "klein-odd" hab ich nicht verstanden...kann mir also nochmal jemand erklären, wie ich ein start und ein ende festlege, wo einschließlich den zahlen, dazwischen nur sortiert wird?

1.) Meiner Meinung nach schon! Ist okay so :D
2.) Wieso? Also was willst du? Willst du nach jedme Tauschvorgang dir das Array anschauen um zu sehen wie/was getauscht wurde? Dann schreib einfach eine for-/for-each Schleife nach daten[min] = hilf:
Java:
	    for (int i : daten) {
		System.out.print(i + " ");
	    }
	    System.out.println();

Wenn du nur das Endergebnis sehen willst, packs halt ganz ans Ende?
3.) eig. genauso, nur dass dein pos in der Schleife nicht bei 0 anfängt sondern bei start ;D und halt nicht bis daten.lenght, sondenr bis end :D

Java:
for (int pos = 0; pos < daten.length - 1; pos++) {
==>
Java:
for (int pos = start; pos < end-1; pos++) {
 

Tina87

Mitglied
Also...
Ja ich möchte nur am ende die zahlenfolge nochmal ausgeben.
mit deiner möglichkeit funktioniert es auch super.

Das mit dem einfügen von start und ende, hatte ich mir natürlich genau so gedacht, aber es funktioniert nicht. er gibt mir dann einfach die unsortierte komplette folge aus. oder ist noch was falsch?
nochmal zum drüberschauen:
Java:
public class Test3
{
    public static void main (String [] args) {
        
        int [] daten = {2,7,3,9,1,5,7,4};
        int start = daten [3];
        int end = daten [6];
        sortieren(daten, start, end);
        
        for (int i : daten) {
        System.out.print(i + " ");
        }
        System.out.println();
    }
    
    static void sortieren (int [] daten, int start, int end) {
        
        for (int pos= start; pos < end-1; pos ++ ) {
            
            int min = pos;
            
            for (int i = pos+1; i < end-1; i ++ ) {
                if (daten[i]<daten[min]) {
                    
                    min=i;
                }
            }
            
            int hilf=daten[pos];
            daten[pos]=daten[min];
            daten[min]=hilf;
        }
    }
}
 

eRaaaa

Top Contributor
Mit
Java:
        int start = daten [3];
        int end = daten [6];
sagst du ihm
start = 9
ende = 7
:lol:

Was du vermutlich meinst ist einfach :
Java:
int start = 3;
int ende = 6;

p.s.: in deiner zweiten for-Schleife musst du doch aber bis < end laufen, nicht bis < end-1 ?!
Weil sonst tauschst du den letzten Platz ja unter Umständen garnicht !
 
Zuletzt bearbeitet:

Tina87

Mitglied
Ups, ja das war dumm.
aber bei start = 3
end = 6 kommt folgendes:
2 7 3 1 9 5 7 4
und das ist ja auch nicht gerade wirklich sortiert.
 

eRaaaa

Top Contributor
Ups, ja das war dumm.
aber bei start = 3
end = 6 kommt folgendes:
2 7 3 1 9 5 7 4
und das ist ja auch nicht gerade wirklich sortiert.

Puh, jetzt komm ich selbst durcheinander...aber müsste eig. stimmen. Denn du sortierst ja nur die Zahlenfolge 9,1,5 der Rest bleibt ja bestehen
9,1,5 sortiert --> 1,5,9 + Rest vorne + Rest hinten --> 2,7,3,1,5,9,7,4

Ist jetzt Auslegungssache glaube ich wie man das implementiert (also ob ende inklusive oder exklusive sein soll :D )
 

Tina87

Mitglied
nee hat sich schon erledigt. das mit dem end-1 musste man zu end ändern, will ja inklusive end sortieren.
jetzt ist alles super!vielen lieben dank!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
Marc111111111 Selection Sort in Java?? Java Basics - Anfänger-Themen 6
J Fehler im Selection Sort Java Basics - Anfänger-Themen 5
B 2 dimensionales Array: Selection Sort Java Basics - Anfänger-Themen 4
N Selection Sort Problem Java Basics - Anfänger-Themen 19
J Liste von Integers mit Selection Sort sortieren Java Basics - Anfänger-Themen 3
B Selection sort Java Basics - Anfänger-Themen 33
E Selection Sort für beliebige Objekte Java Basics - Anfänger-Themen 24
U Selection Sort schnellere Variante Java Basics - Anfänger-Themen 17
I Selection-Sort // Array *help* Java Basics - Anfänger-Themen 2
J Selection Sort in Liste implementieren Java Basics - Anfänger-Themen 3
0 Selection Sort funktioniert nicht. Java Basics - Anfänger-Themen 3
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
M The Selection cannot be launched... Java Basics - Anfänger-Themen 4
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
F JTable speichern, Fehler bei Selection Java Basics - Anfänger-Themen 3
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
J "this selection cannot be launched..." eclipse fehlermeldung Java Basics - Anfänger-Themen 7
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
I deselect oder Selection aufheben Java Basics - Anfänger-Themen 2
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
T Auf Selection warten Java Basics - Anfänger-Themen 7
R JPopupMenu + single selection Java Basics - Anfänger-Themen 8
emreiu Formatiertes Output bei Insertion Sort Java Basics - Anfänger-Themen 6
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
X Collections.sort als Lambda Java Basics - Anfänger-Themen 14
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
L Insertion Sort bei zweidimensionalem Array Java Basics - Anfänger-Themen 7
G Insertion Sort mit Aray Java Basics - Anfänger-Themen 5
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4
M Collection.sort sortiert nicht Java Basics - Anfänger-Themen 7
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
P Java Bubble Sort,Anfängerfehler Java Basics - Anfänger-Themen 4
S Methoden Sort Array Java Basics - Anfänger-Themen 9
I Erste Schritte sort() vs. sort() Java Basics - Anfänger-Themen 9
BadBat ArrayList<String> sort by last word Java Basics - Anfänger-Themen 8
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
X Quick Sort - Vergleichsoperationen zählen Java Basics - Anfänger-Themen 0
O Insertion Sort Java Basics - Anfänger-Themen 4
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
N Schlüsselworte Bubble Sort nach eigener Ordnung Java Basics - Anfänger-Themen 8
O Listen sort-Methode Java Basics - Anfänger-Themen 1
M Quick Sort Java Basics - Anfänger-Themen 4
V Heap-Sort Java Basics - Anfänger-Themen 0
M Methoden Quick Sort Java Basics - Anfänger-Themen 5
T array.sort mit zwei Kriterien Java Basics - Anfänger-Themen 8
S Liste und Bubble Sort Java Basics - Anfänger-Themen 4
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
S Fehler bei Arrays.sort(array) - Methode!? Java Basics - Anfänger-Themen 3
P collections.sort Java Basics - Anfänger-Themen 2
B Arrays.sort Java Basics - Anfänger-Themen 4
P schneller Sort ? Java Basics - Anfänger-Themen 2
S Bubble Sort Java Basics - Anfänger-Themen 5
B Merge-Sort Analyse Java Basics - Anfänger-Themen 27
K Array.sort() Java Basics - Anfänger-Themen 12
H Etwas wie sort() / sorted() in JAVA-Collections? Java Basics - Anfänger-Themen 5
F Methoden Insert Sort Fehler Java Basics - Anfänger-Themen 10
P Ein sort problem Java Basics - Anfänger-Themen 6
S Bubble Sort Algorithmus Java Basics - Anfänger-Themen 3
Spin sort tokens - somebody knows a better solution? Java Basics - Anfänger-Themen 13
B Strings alphabentisch sortieren mit Hilfe von insertion sort Java Basics - Anfänger-Themen 6
P Array.sort // Arrays ausgeben Java Basics - Anfänger-Themen 21
S String sortieren mit Interface und sort() Java Basics - Anfänger-Themen 6
F Arrays.sort( ) Problem Java Basics - Anfänger-Themen 14
Dit_ Collections.sort(..); | Anwendung Java Basics - Anfänger-Themen 4
N java.util.Arrays.sort Warum sind Leerzeichen vor alphabetischen Zeichen sortiert? Java Basics - Anfänger-Themen 12
D Insertion sort auf eine liste Java Basics - Anfänger-Themen 4
X Counting Sort Java Basics - Anfänger-Themen 5
P Problem mit Insertion Sort Java Basics - Anfänger-Themen 4
G Quick Sort - bin ich zu blöd? Java Basics - Anfänger-Themen 7
D sort.exe über java aufrufen Java Basics - Anfänger-Themen 2
V Bubble Sort endet in Endlosschleife Java Basics - Anfänger-Themen 4
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
hedges Insertion Sort Algorithmus problem Java Basics - Anfänger-Themen 18
N Collections Sort ArrayList<> Java Basics - Anfänger-Themen 7
K Arrays.sort() Java Basics - Anfänger-Themen 2
S Collection Sort Java Basics - Anfänger-Themen 15
O Arrays und sort Java Basics - Anfänger-Themen 4
G sort(int[] a, int fromIndex, int toIndex) Java Basics - Anfänger-Themen 5
F Klassenmethode Arrays.sort(Object[]a) Java Basics - Anfänger-Themen 2
H Bubble sort array Java Basics - Anfänger-Themen 12
M Bubble-Sort und null Werte Java Basics - Anfänger-Themen 4
G Zählen von Zuweisungen bei Bubble Sort Java Basics - Anfänger-Themen 3
I Methode Arrays.sort(Object[] arr) Java Basics - Anfänger-Themen 19
K compareTo in Verbinug mit Arrays.sort() Java Basics - Anfänger-Themen 4
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
U Array.sort auf variable Array-Größe anwenden Java Basics - Anfänger-Themen 3
D Mit java.util.Arrays.sort die negativen Zahlen hinten Java Basics - Anfänger-Themen 4
D Collections.sort() frage Java Basics - Anfänger-Themen 6
V Sortieren mit Bubble-Sort Java Basics - Anfänger-Themen 5
G Arrays.sort() will nicht sortieren Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben