AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Java] Arrayinhalt gruppieren

Ein Thema von Evian · begonnen am 12. Nov 2008 · letzter Beitrag vom 13. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#1

[Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 17:35
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:
   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;
   }
PS: mir würde auch nen Ansatz in Pascal total reichen.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 17:47
Du möchtest also nur gruppieren, aber die Elemente untereinander nicht sortieren?

Ich würd es so machen:

Code:
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;
   }
Ist etwas kürzer aber verfolgt den gleichen Gedanken

Nennt sich iirc Bucketsort ...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 17:56
Ich interpretiere "reihenfolgeerhaltend" mal als sortiert
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#4

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 17:59
@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?!
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 17:59
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 von DeddyH:
Ich interpretiere "reihenfolgeerhaltend" mal als sortiert
Nein, würde ja die aktuelle Reihenfolge verändern.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 18:03
*Pfh*, dann eben nicht
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 18:06
Zitat von Evian:
@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?!
Bei deiner Lösunf wurde die inner For-Schleife auch 2 mal ausgeführt

Aber wenn es bei gerade/ungerade beleibt, kannst du es natürlich auch so machen:
Code:
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;
   }
Du fügst also quasi von 2 Seiten ein
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 18:08
Das würde aber die Reihenfolge der ungeraden Zahlen ändern. Die wären doch vertauscht?
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#9

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 18:25
ja stimmt ich hab selber 2 Schleifen, ich dummi. Ach man man man... aber trotzdem vielen Dank!!!!
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: [Java] Arrayinhalt gruppieren

  Alt 12. Nov 2008, 18:40
Zitat von freak4fun:
Das würde aber die Reihenfolge der ungeraden Zahlen ändern. Die wären doch vertauscht?
Ups, äh ja das wären sie dann

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz