![]() |
[Java] Arrayinhalt gruppieren
Hallo Zusammen,
ich soll eine Methode schreiben, die ein Array vom Typ Long[] wie folgt ausgibt: Gruppiert in gerade und ungerade, d.h. erst alle geraden, dann alle ungeraden, reihenfolgeerhaltend. Ich habe jetzt eine Version geschrieben, die zwar funktioniert, aber die mir echt gar nicht gefällt. Die ist total redundant und irgendwie auch nicht besonders clever gelöst. Könnte mir jemand einen Tip geben, wie man das viellicht noch besser lösen könnte?! gruß, Phill
Code:
PS: mir würde auch nen Ansatz in Pascal total reichen. ;)
long[] gruppiert(final long[] zahlen) throws IllegalArgumentException{
if (zahlen == null){ throw new IllegalArgumentException(); } int pos=0; final long[] result = new long[zahlen.length]; for(int e=1;e<=2;e++){ for(int i=0;i<zahlen.length;i++){ if (e==1) { if (zahlen[i]%2==0){ result[pos]=zahlen[i]; pos++; } }else{ if (zahlen[i]%2!=0){ result[pos]=zahlen[i]; pos++; } } } } return result; } |
Re: [Java] Arrayinhalt gruppieren
Du möchtest also nur gruppieren, aber die Elemente untereinander nicht sortieren?
Ich würd es so machen:
Code:
Ist etwas kürzer aber verfolgt den gleichen Gedanken ;)
long[] gruppiert(final long[] zahlen) throws IllegalArgumentException{
if (zahlen == null) { throw new IllegalArgumentException(); } int pos=0; final long[] result = new long[zahlen.length]; for(int i=0;i<zahlen.length;i++) if (zahlen[i] % 2 == 0) result[pos++]=zahlen[i]; for(int i=0;i<zahlen.length;i++) if (zahlen[i] % 2 == 1) result[pos++]=zahlen[i]; return result; } Nennt sich iirc Bucketsort ... |
Re: [Java] Arrayinhalt gruppieren
Ich interpretiere "reihenfolgeerhaltend" mal als sortiert ;)
|
Re: [Java] Arrayinhalt gruppieren
@DeddyH: Nein, die ursprüngliche Reihenfolge soll erhalten bleiben, also unsortiert.
@jfheins: Na mein erster Ansatz war auch so, aber hierbei gibt es ja dann 2 Vorschleifen. Kann ich es nicht irgendwie mit nur einer Vorschleife, aber auch ohne Redundanz machen?! ;) |
Re: [Java] Arrayinhalt gruppieren
Vielleicht auch ein Array und die Anzahl von ungeraden ermitteln und dann in ein Array packen. Dann kann man ja die Pos. über 2 Zähler ermitteln wo sie hin müssen. ;)
Zitat:
|
Re: [Java] Arrayinhalt gruppieren
*Pfh*, dann eben nicht :tongue:
|
Re: [Java] Arrayinhalt gruppieren
Zitat:
Aber wenn es bei gerade/ungerade beleibt, kannst du es natürlich auch so machen:
Code:
Du fügst also quasi von 2 Seiten ein ;)
long[] gruppiert(final long[] zahlen) throws IllegalArgumentException{
if (zahlen == null) { throw new IllegalArgumentException(); } int pos1 = 0; int pos2 = zahlen.length - 1; final long[] result = new long[zahlen.length]; for(int i = 0; i < zahlen.length; i++) { if (zahlen[i] % 2 == 0) result[pos1++] = zahlen[i]; else result[pos2--] = zahlen[i]; } return result; } |
Re: [Java] Arrayinhalt gruppieren
Das würde aber die Reihenfolge der ungeraden Zahlen ändern. Die wären doch vertauscht?
|
Re: [Java] Arrayinhalt gruppieren
ja stimmt ich hab selber 2 Schleifen, ich dummi. Ach man man man... aber trotzdem vielen Dank!!!! :)
|
Re: [Java] Arrayinhalt gruppieren
Zitat:
Ok, du kannst 2 Arrays erstellen, die Zahlen ja nach gerade/ungerade in die beiden Arrays schmeißen und danach die beiden Array zusammenkopieren. Aber ob das schneller ist als meine 2. Lösung, wage ich sehr zu bezweifeln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz