myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[JAVA] Char Array mit Bubblesort durch While-Schleife sortieren

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Alt 15.10.10, 07:47   #1
Poppers
8===O - - - -
 
Benutzerbild von Poppers
 
Registriert seit: Feb 2009
Beiträge: 336
Bedankt: 16
Poppers ist noch neu hier! | 0 Respekt Punkte
Standard

Grundsätzlich steckt ja nicht so viel dahinter wenn gleich man zugeben muss dass man hier und da stolpern kann. Meine Frage, was ist deine Frage? Oder soll ich dir den Code jetzt runter schreiben?

Schwierigkeiten seh ich eigentlich nur bei der Kasakadierung der Schleifen für den Bubblesort. Besonders beim Vergleich von zwei chars. Denn was ist größer a oder b? Um das sauber zu lösen musst du den char in einen Hex-Wert wandeln. (Zuordnung ASCII Tabelle).

Wenn du den Bubblesort richtig verstanden hast, weist du das maximal n*(n-1)/2 Durchläufe notwendig sind um dein Array im "Worst-Case" zu sortieren. Vielleicht hilft dir das etwas bei der Implementierung.

Wenn du noch Fragen hast, Frag! Ansonsten würd ich dir empfehlen einfach mal Code zu implementieren und hier zu posten. Ich sag dir dann schon ob der Gedankengang richtig ist bzw wie die Umsetzung ausschaut.

Falls ich nit Antwort schreib kurz PN die gibts bei mir direkt aufs Handy

Lg
Poppers ist offline   Mit Zitat antworten
Alt 15.10.10, 08:56   #2
Kapp.Sparda
Anfänger
 
Registriert seit: Sep 2008
Beiträge: 3
Bedankt: 2
Kapp.Sparda ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Poppers Beitrag anzeigen
Schwierigkeiten seh ich eigentlich nur bei der Kasakadierung der Schleifen für den Bubblesort. Besonders beim Vergleich von zwei chars. Denn was ist größer a oder b? Um das sauber zu lösen musst du den char in einen Hex-Wert wandeln. (Zuordnung ASCII Tabelle).
Schwierigkeiten gibts da eigentlich nicht, man kann Buchstaben genauso wie Zahlen vergleichen. Umwandeln muss man ansich nichts man muss nur wissen was wo in der ASCII Tabelle liegt um zu wissen was größer ist.

Man kann sich zB auch einfach die ASCII Werte mit nem kleinen Typecasting ausgeben lassen:

Code:
System.out.print((int)'a'); // liefert die Dezimalzahl 97
System.out.print((int)'b'); // liefert die Dezimalzahl 98
Somit kann man sagen b ist "größer" a.

Hier mal ein BubbleSort Code von der java-uni.de

Code:
public class BubbleSort { 
   public static void sortiere(int[] x) {
      boolean unsortiert=true;
      int temp;
      
      while (unsortiert){
         unsortiert = false;
         for (int i=0; i < x.length-1; i++) 
            if (x[i] > x[i+1]) {                      
               temp       = x[i];
               x[i]       = x[i+1];
               x[i+1]     = temp;
               unsortiert = true;
            }          
      } 
   }
Musst eigentlich ja nur den Datentyp deines Arrays ändern und vielleicht die Vergleichsoperatoren umkehren; weiß ich jetz nich ^^

mfg
Kapp.Sparda ist offline   Mit Zitat antworten
Alt 15.10.10, 13:12   #3
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

Ich habe mich noch nie so richtig mit Java beschäftigt aber was mir auffällt:

Zitat:
2. Modify the program While to use the length property of an array.
Code:
while (i <= 5) // loop variable still in range?
wäre wohl besser so zu schreiben

Code:
while (i <= F.length) // loop variable still in range?
Xalir ist offline   Mit Zitat antworten
Alt 15.10.10, 16:34   #4
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Code:
public class BubbleSort { 
   public static void sortiere(int[] x) {
      boolean unsortiert=true;
      int temp;
      
      while (unsortiert){
         unsortiert = false;
         for (int i=0; i < x.length-1; i++) 
            if (x[i] > x[i+1]) {                      
               temp       = x[i];
               x[i]       = x[i+1];
               x[i+1]     = temp;
               unsortiert = true;
            }          
      } 
   }
das ist fast bubblesort.
warum? weil die innere for schleife immer über das komplette array geht, obwohl nach jedem scheifendurchlauf der zu sortierende teil um 1 element abnimmt.
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Alt 15.10.10, 21:15   #5
PornoPenner
Banned
 
Registriert seit: Aug 2010
Beiträge: 209
Bedankt: 70
PornoPenner ist noch neu hier! | 0 Respekt Punkte
Standard

! !
PornoPenner ist offline   Mit Zitat antworten
Alt 16.10.10, 12:56   #6
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von PornoPenner Beitrag anzeigen
Bsp:

99 05 06 07 08 09 01

--> 1. Runde Bubblesort: 05 99 05 07 08 01 09
nach einem durchlauf durch die for-scheife: 05 07 08 01 09 99.
die 99 muss bei weiteren durchgängen nicht mehr beachtet werden.
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.


Sitemap

().