Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Main {
- public static void main(String[] args) {
- int[] a1 = { 3, 2, 1 };
- int[] a2 = { 9, 8, 7, 6, 5, 4,3, 2, 1 };
- int[] a3 = { 2876, 53, 5345, 53, 78, 2, 9, 1, 3};
- int[] a4 = { 2, 5, 1, 77, 23, 464, 5355, 21, 44, 656};
- int[] a5 = { 6, 11, 18, 5, 99, 34, 12, 999, 98, 8, 44, 95, 244};
- Quicksort q = new Quicksort(a1);
- System.out.println("------------------------------------------------------------------");
- q = new Quicksort(a2);
- System.out.println("------------------------------------------------------------------");
- q = new Quicksort(a3);
- System.out.println("------------------------------------------------------------------");
- q = new Quicksort(a4);
- System.out.println("------------------------------------------------------------------");
- q = new Quicksort(a5);
- }
- }
- public class Quicksort {
- private int vergleiche = 0;
- private int vertausche = 0;
- public Quicksort(int[] t)
- {
- int linksPos = 0;
- int rechtsPos = t.length - 1;
- arrayAusgeben(t);
- quickSort(t, linksPos, rechtsPos);
- arrayAusgeben(t);
- }
- public void quickSort(int[] t, int linksPos, int rechtsPos) {
- if (linksPos < rechtsPos) {
- int key = t[(linksPos + (rechtsPos - linksPos) / 2)];
- int ltemp = linksPos;
- int rtemp = rechtsPos;
- do {
- vergleiche++; // Erster Vergleich
- while (t[ltemp] < key)
- {
- ltemp++;
- vergleiche++; // Vergleicht nochmal, ob die Schleife verlassen werden darf.
- }
- vergleiche++; // Erster Vergleich
- while (t[rtemp] > key)
- {
- rtemp--;
- vergleiche++; // Vergleicht nochmal, ob die Schleife verlassen werden darf.
- }
- if (ltemp <= rtemp)
- {
- int temp = t[ltemp];
- t[ltemp] = t[rtemp];
- t[rtemp] = temp;
- ltemp++;
- rtemp--;
- vertausche++;
- }
- } while (ltemp <= rtemp);
- if (linksPos < rtemp) {
- quickSort(t, linksPos, rtemp);
- }
- if (rechtsPos > ltemp) {
- quickSort(t, ltemp, rechtsPos);
- }
- }
- }
- public void arrayAusgeben(int[] array)
- {
- for (int i =0; i<array.length; i++)
- {
- System.out.print(array[i] + " ");
- }
- System.out.println();
- double durchschnitt = vergleiche/((double)array.length);
- System.out.println("Vergleiche: "+vergleiche+" Vergleiche für Elemente "+array.length+" Elemente. "+"(Durchscnitt: "+durchschnitt+")");
- System.out.println("Durchgeführte Vertauschungen: "+vertausche);
- System.out.println("");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement