Java nach letzter Ziffer sortieren

rosima26

Aktives Mitglied
Moin,
ich möchte gerne ein Array nach der hintersten Ziffer sortieren d.h aus 46,82,93 soll 82,93,46 werden.
Das soll dann in ner linkedList gespeichert werden. Dabei sollen die Zahlen sortiert an der jeweiligen Stelle in der Liste stehen.
Mein Code sieht bisher so aus:
Funktioniert aber nicht wirklich, vielleicht hat ja jemand eine Idee
Java:
void sort(int[] a) {
         LinkedList<Integer> bin1 = new LinkedList<Integer>();
        
         for(int i=0; i<a.length+1; i++) {
             bin1.add(0);
         }
        
         for (int i = 0; i<a.length; i++) {
             bin1.add(a[i]%10, i);
         }
         for (int i = 0; i<bin1.size(); i++) {
             if (bin1.get(i)== 0) {
                 bin1.remove(i);
                
             }
         }
         System.out.println(bin1.toString());
        }
 

temi

Top Contributor
Du solltest tun, was @KonradN immer vorschlägt: Überleg dir zuerst mit Stift und Papier, wie du vorgehen möchtest und danach setze es um.

Du hast also 46, 82, 93. Wenn du mit der ersten Zahl begonnen hast und die in die Liste eingefügt hast, kommt als nächstes 82 dran. Musst du die vorher oder nachher in die Liste einfügen?
 

rosima26

Aktives Mitglied
Spielt das ne Rolle? Ich beschreibe die Liste mit 0en in solange bis die Länge des Arrays erreicht ist. Dann gehe ich durch das Array und fange vorne mit der ersten Zahl an. Dann überschreibe ich die 0 in der Liste an der %10ten Stelle mit der Zahl die beim jeweiligen Index plaziert ist. (in 9 sollte das eig. a sein.
 

temi

Top Contributor
Dann überschreibe ich die 0 in der Liste an der %10ten Stelle mit der Zahl die beim jeweiligen Index plaziert ist. (in 9 sollte das eig. a sein.
Wenn dein Array 3 Elemente enthält, dann gilt das ja auch für die Liste. Wie willst du denn das neunte Element der Liste überschreiben, wenn es das gar nicht gibt?

EDIT: Abgesehen davon, tut dein Programm nicht das, was du beschrieben hast. Würde es das tun, dann solltest du eine IndexOutOfBoundsException erhalten. Du schreibst den WertAusDemArray % 10 an die Stellen 0, 1 und 2.

EDIT: mea culpa. Das stimmte natürlich nicht.
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
Das es für Arrays und Collections sort-Methoden gibt sollte sich schon herumgesprochen haben. Alles was man tun muss, ist den gewünschten Vergleich in Form eines Comparator bereitstellen:
Java:
        final int[] a = {46, 82, 93};

        final LinkedList<Integer> list = new LinkedList<>();
        Arrays.stream(a).forEach(list::add);

        final Comparator<Integer> comparator = Comparator.comparing(t -> {
            final String s = t.toString();
            return s.substring(s.length() - 1);
        });
        Collections.sort(list, comparator);
        
        list.forEach(System.out::println);
 

mihe7

Top Contributor
Spielt das ne Rolle?
Äh, ja. Wie sortierst Du denn sonst?

Ich beschreibe die Liste mit 0en in solange bis die Länge des Arrays erreicht ist.
Du hast ein Array der Länge n und fügst einer leeren Liste n+1 Elemente hinzu.

Dann überschreibe ich die 0 in der Liste an der %10ten Stelle mit der Zahl die beim jeweiligen Index plaziert ist. (in 9 sollte das eig. a sein.
Nein, Du überschreibst nichts, sondern fügst ein.

Und der Ansatz kann nicht funktionieren. Nehmen wir mal die Sequenz 43, 42, 41, 83

43 würde bei 3 eingefügt: {0,0,0,43,0,..}, die 42 bei 2: {0,0,42,0,43,0}, die 41 bei 1 {0, 41, 0, 42, 0, 43, ...} und die 83 bei 3: {0, 41, 0, 83, 42, 0, 43, .. } Jetzt noch die 0en löschen: {41, 83, 42, 43} -> falsche Reihenfolge.
 

KonradN

Super-Moderator
Mitarbeiter
Naja, es handelt sich sehr wahrscheinlich um eine Übung, die nicht auf die Verwendung dieser Methoden hinaus läuft.
Wobei ich da auch durchaus ein Freund davon bin, immer auf die Verwendung von Methoden und so hin zu weisen. Klar, die vorhandenen Sortieralgorithmen sollte man nicht verwenden, aber die werden ja schon einen Sortieralgorithmus haben und der muss nur angepasst werden. Das kann man mit Copy & Paste machen und dann verändert man direkt die Kopie (= Was vermutlich dem Niveau der Schüler entspricht), aber ich würde da dennoch aufzeigen, wohin di eReise gehen würde - was das spätere Ziel wäre: Doppelten Code vermeiden, also gibt es sowas wie einen Comparator, der den Vergleich machen kann und der würde dann in der universellen Sortiermethode genutzt.

Da hätte ich dann die Hoffnung, dass die Leute so etwas sehen:
- Was Clean Code ist. (Das würde ich denen immer um die Ohren hauen. Keine Aufgabe, die die lösen, würde ich ohne eine möglichst gute Musterlösung beenden. Und eine Aufgabe wird nie eine Methodensignatur vorweisen wie in dem merge Thread die Parameter Arrays a, b, c und dann die Grenzen l1, l2, r1, r2 und so hießen)
- Wohin die Reise etwas geht mit Einhaltung gewisser Regeln wie DRY und den entsprechenden Refactorings (Wie die in der IDE gehen würde ich den guten Schülern ggf. zeigen. Da liegt die Messlatte halt höher.)

Und dann kommt der Aha Effekt, wenn man ggf. eine Klasse mit Tag und Monat geschrieben hatte und siehe da: Etwas in der Art gibt es im Framework ... oder hier die Sortierung mit einem Comparator und heya - das gibt es ja auch im Framework.

Aber es ist hoffentlich auch klar - das ist kein Widerspruch zu Deiner Aussage! Dass die Framework-Klassen da erst einmal nicht zur Lösung der Aufgabe heran gezogen werden sollten sehe ich selbstverständlich nicht anders. Und meine Ergänzung bezieht sich auch nur auf eine Musterlösung ganz am Ende - die so natürlich nicht von einem Schüler erwartet wird! Und ich mag mit meiner Sicht komplett daneben liegen - ich bin kein Lehrer und habe Wissensvermittlung nicht studiert und kenne auch die Rahmenbedingungen nicht (ggf. zu viel Stoff in zu wenig Unterrichtseinheiten, so dass dieses "weitergehende" schlicht keinen Platz hat oder sonst irgendwas in der Art). Aber wie immer kann ich es nicht lassen. meinen Senf dazu zu geben :)
 

Jw456

Top Contributor
Und der Ansatz kann nicht funktionieren. Nehmen wir mal die Sequenz 43, 42, 41, 83

43 würde bei 3 eingefügt: {0,0,0,43,0,..}, die 42 bei 2: {0,0,42,0,43,0}, die 41 bei 1 {0, 41, 0, 42, 0, 43, ...} und die 83 bei 3: {0, 41, 0, 83, 42, 0, 43, .. } Jetzt noch die 0en löschen: {41, 83, 42, 43} -> falsche Reihenfolge.

Ich deute das Vorhaben des TE so, er will die letzten beiden sortiert vorne haben der Rest soll bleiben.

43, 44, 42, 41, 83 will er wohl zu 41, 83, 43, 44, 42 haben , wozu das gut sein soll erschießt sich mir zwar nicht so richtig

ich möchte gerne ein Array nach der hintersten Ziffer sortieren d.h aus 46,82,93 soll 82,93,46 werden.
oder er meint es so
83, 41, 42, 43, 44
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Da ist nicht ganz klar zu erkennen er sollte ein Beispiel mit mindestens 5 Zahlen geben und was er dann am Ende erwartet.
 

Jw456

Top Contributor
ich möchte gerne ein Array nach der hintersten Ziffer sortieren d.h aus 46,82,93 soll 82,93,46 werden.
" hintersten Ziffer" damit meint er wohl die zweite Stelle (82) da die drei ja schon sortirt sind kommt nur die erste stelle an die letze .
hat eigentlich nichts mit sortiren zu tun.

Bei nur drei Zahlen kann man es so oder so deuten.

Warten wir was der TE sagt.
 

berndoa

Top Contributor
Man halte mich für verrückt aber warum geht man nicht hin, anfangs eine leere Liste und fügt dann unter Nutzung der binären Suche (und halt dieser speziellen Art, 2 Zahlen auf <,=,> zu vergleichen) alle Zahlen aus dem Array in die Liste ein?

Je nach Größe der Liste macht es womöglich auch Sinn, die erst zu sortieren (entweder im Ursprungsarray selbst oder eine neues, sortieres Array2 zu bauen) und von da halt einfach in die Liste kopieren.
Weils bekanntlich ja nicht so wirklich eifnach ist, in einer linkedlist an einer bestimmten Position was einzufügen.

Oder immer wieder das Minimum im array suchen, in die linkedlist packen, im array löschen (bspw. durch -1 ersetzen oder sowas). rinse and repeat bis das array leer ist.
 

MarvinsDepression

Bekanntes Mitglied
... oder man gönnt sich ein Array aus 10 Listen, für jede Endziffer eine, geht einmal durch sein int-Array und verteilt die einelnen Values ( listArray[value % 10].add(value) ), trommelt alle Listen zu eine einzigen zusammen, fertig. Ist zwar kurzfristig ein bischen arg Speicherhungrig, dafür dürfte es so ziemlich die schnellste Umsetzung sein. Es sei denn, man macht das ganze doch mit Arrays, statt mit Listen.

P.S.: Wenn auch negative Zahlen vorkommen dürfen -> Math.abs(value) % 10 . Klar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
B Umstieg von C# nach Java Java Basics - Anfänger-Themen 18
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
C Implizite Typumwandlung nach Java 8 anders? Java Basics - Anfänger-Themen 7
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
D Celsius nach Fahrenheit Java Java Basics - Anfänger-Themen 8
S Erste Schritte Suche nach einem guten JAVA-Buch (Definition im Thread) Java Basics - Anfänger-Themen 6
C Nach Java-Installation sind Befehle erfolglos Java Basics - Anfänger-Themen 4
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
K Fehler nach Installation von Java 3D Java Basics - Anfänger-Themen 2
B Java nach bestimmter dateiendung suchen Java Basics - Anfänger-Themen 6
C *.java Datei nach Doppelklick mit VM ausführen Java Basics - Anfänger-Themen 29
M Einschätzung zu Kenntnissen nach folgendem Java-Kurs Java Basics - Anfänger-Themen 2
Golo Roden Von .NET nach Java - wie? Java Basics - Anfänger-Themen 10
G Java-Frames funktionieren nach Neuinstallation nicht mehr. Java Basics - Anfänger-Themen 3
V suche nach nsis script für java applikation Java Basics - Anfänger-Themen 2
D Probleme bei Code Portierung von C# nach Java [Gelöst] Java Basics - Anfänger-Themen 4
P Fragen nach 12 monatiger Java Pause :P Java Basics - Anfänger-Themen 21
A Java nach UML Java Basics - Anfänger-Themen 6
G zwei java nach einander ausführen Java Basics - Anfänger-Themen 14
G Netzlaufwerk via Java nich lesbar nach Startup Java Basics - Anfänger-Themen 5
C Nach Installation kein Java-Compiler Java Basics - Anfänger-Themen 7
P Umstieg von Delphi nach Java Java Basics - Anfänger-Themen 2
S Export nach Excel in Java Java Basics - Anfänger-Themen 7
A Stringübergabe von JAVA nach C++ Java Basics - Anfänger-Themen 4
S Java nur nach Neustart aktiv? Java Basics - Anfänger-Themen 8
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben