Skip to content

Instantly share code, notes, and snippets.

@inhji
Last active October 13, 2015 01:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inhji/4120461 to your computer and use it in GitHub Desktop.
Save inhji/4120461 to your computer and use it in GitHub Desktop.
Select Sort
import java.util.ArrayList;
import java.util.Arrays;
public class selectsort {
/**
*
* Select Sort
*
* Ein Feld wird einmal vollständig durchlaufen. Dabei wird durch einfache Vergleiche das größte Element herausgesucht
* (selektiert) und zum Schluss an das Feldende gepackt. Dieser Schritt wird nun mit dem kleineren Teilfeld (Feld ohne
* das letzte Element) wiederholt und wiederholt und ... Und irgendwann sind wir fertig und die Elemente sind sortiert.
* Aufgrund der Auswahl von Elementen wird dieses Verfahren auch als "Sortierung durch Auswahl" bezeichnet.
*
*/
public static void main(String[] args) {
ArrayList<Integer> Zahlen = new ArrayList<Integer>(Arrays.asList(1,1,1,4,3,99,5,8,99999,2,45,467,747,75));
System.out.println("Unsortierte Liste:");
System.out.println(Zahlen.toString());
System.out.println(" ");
System.out.println("Sortierte Liste:");
System.out.println(selectSort(Zahlen, true).toString());
}
private static ArrayList<Integer> selectSort(ArrayList<Integer> list, Boolean verbose) {
int listSize = list.size();
// Schleife läuft einmal für jedes Element der Liste
for (int j = 0; j < list.size(); j++, listSize--){
int big = 0; // Größte Zahl in diesem Durchlauf
int bigIndex = 0; // Index von big
// Schleife ausgehend von der Position der unsortierten Elemente
for (int i = j; i < list.size(); i++ ){
/*
* Wenn aktuelles Element größer oder
* gleich des Größten des
* übergeordneten Durchlaufs...
*/
if (list.get(i) >= big){
big = list.get(i); // Setze aktuelles Element als big
bigIndex = i; // Setze aktuellen index als bigIndex
}
}
if (verbose == true){
System.out.println("Die zu sortierende Liste ist jetzt noch " + listSize + " Elemente gross.");
System.out.println("Die Größte Zahl für diesen Durchlauf ist: " + big);
System.out.println(list.toString());
System.out.println(" ");
}
list.remove(bigIndex); // Größte Zahl entfernen..
list.add(0, big); // ..und am Anfang des Arrays wieder einfügen
}
return list;
}
}
@inhji
Copy link
Author

inhji commented Jan 15, 2013

updated, added verbose option, removed unneeded imports

@inhji
Copy link
Author

inhji commented Jan 15, 2013

added comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment