Anordnen der höchsten int in einem int[]

Patrick_1991

Mitglied
Hallo alle.

Ich würde gerne 2 Sachen wissen:
Wie bekomme ich aus einem int[] die 9 höchsten Variablen ?
Java:
int[] haupt = {45, 45, 0, 878, 45842, 87878, 8548, 1458, 8232};
int eins = // Soll aus dem int[] oben ausgelesen werden (ist die höchste).
// ... für weitere 8 Plätze (8te: Ist dann die zweit Höchste)

Diese sollen sich das also in jeder Variable befinden...

2.Frage ( nicht sehr wichtig nur wenn ihr es wisst ;) ):

Wie kann ich aus einem String[] einen int[] machen,
natürlich enthält der String[] auch nur zahlen...

Mfg & vielen Dank im Voraus
Patrick
 
G

Gast2

Gast
1) Array sortieren und die ersten 9 Zahlen rausnehmen
2) int[] Array der selben Größe erzeugen, mit ner schleife durch das Array laufen und per Integer.parseInt die Zahlen konvertieren.
 

Patrick_1991

Mitglied
Vielen Dank erstmal ;-)

1) Verstehe ich immer noch nicht, weil es leider nicht ganz so simpel ist.
Ich weiß leider nicht wie groß UND aus wie vielen Elementen der Array besteht...
Trotzdem ne Idee ...

Mfg
Patrick
 

poku17

Mitglied
Naja, das int-array initialisierst du einfach mit der Laenge des String-Arrays...
also:
Code:
int[] intArray = new int[stringArray.length];

und zum sortieren kannst du im dem Fall auch einfach die Utility-Class Arrays nehmen...

Code:
Arrays.sort(Array a);

aber selbst schreiben bringt dir mehr... eine Methode die dir ein int-array sortiert is auch echt garnicht schwierig...

nur kurz hier im Eitor gechrieben, kann Fehler enthalten... aber so waere mein ansatz...
Java:
public static void sortIntArray(int[] intArray){
  int tmpStart = intArray[0];
  for(int i = 1; i < intArray.length; i++){
    if(tmpStart < intArray[i]){
      intArray[i - 1] =  intArray[i];
      intArray[i] = tmpStart;
    }
    else{
      tmpStart = intArray[i];
    }
  }
}

oder eben rueckgabe type int[] und das sortierte array zurueckgeben lassen...
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Bubble vertauscht ja nur... bei einem Array wie
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 9
würde erstmal die 8 (mit mehr als 9 Schritten) nach vorne wandern... Selection Sort, vielleicht!?
 

Landei

Top Contributor
Ich meinte 9 äußere Schleifendurchläufe: Im ersten Durchlauf bubbelt das Maximum ganz nach hinten, im zweiten Durchlauf landet der zweitgrößte Wert auf dem vorletzten Platz u.s.w.
 

Kababär

Top Contributor
Quick-Sort lautet hier das Stichwort. Wir haben das gerade in der Schule gemacht :)
Ist zwar am Kompleziertesten, aber dafür lohnt es sich! ;)

Wieso ist ein selbst geschriebenes Programm schneller als die Utility-Class?
 
H

hüteüberhüte

Gast
...natürliche Ordnung wären aufsteigend sortierte Arrays. Ein BubbleSort, der nach dem n-ten Durchlauf abbricht, kann die größten n Zahlen entweder auf die letzten oder auf ersten Stellen tauschen.
Denkbar wäre auch ein Selection Sort, der die ersten/letzten n Zahlen richtig einsortiert:

Java:
int[] array = ...;

int i1 = 0; // zuerst kleinstes Element, dann größtes Element
for (int i = 0; i < array.length; i++) {
    if (array[i] > i1) {
        i1 = array[i];
    }
}

int i2 = 0; // zuerst kleinstes Element, dann zweitgrößtes Element
for (int i = 0; i < array.length; i++) {
    if (array[i] < i1 && array[i] > i2) {
        i2 = array[i];
    }
}


int i3 = 0; // drittgrößtes Element
for (int i = 0; i < array.length; i++) {
    if (array[i] < i2 && array[i] > i3) {
        i3 = array[i];
    }
}

// usw.

Habe einfach mal angenommen, dass hierbei zumindest 3 Elemente größer 0 sind und dass es keine gleichen Elemente gibt. Falls es doch gleiche Elemente gibt, so wird unter jeweils gleichen Elementen immer nur eins ausgewählt. Das lässt sich nicht umgehen.

Es kann auch Integer.MIN_VALUE verwendet werden.
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
i1 bis i9 ... das ist doch bogus :autsch: Nimm ein sort, und wenn der Array zu groß ist, lauf 9 mal drüber und hol dir die höchsten Zahlen.
 

pro2

Bekanntes Mitglied
Hab hier höchstens noch eine Selectionsort Implementierung, die sich dafür ggf. anbieten würde:

Java:
    public static int[] getHighestNumbers(int[] array, int numbers)
    {
        int max = 0;
        int left = 0;
        int[] temp = new int[numbers];
        while(left < numbers)
        {
            max = left;
            for(int i = left + 1; i < array.length; i++)
            {
                if(array[i] > array[max])
                {
                    max = i;
                }
            }
            //Array[left] und Array[min] vertauschen, der Weg ist beliebig
            array[left] = array[left] + array[max] - (array[max] = array[left]);
            temp[left] = array[left];
            left++;         
        }
        return temp;
    }
 
H

hüteüberhüte

Gast
i1 bis i9 ... das ist doch bogus :autsch: Nimm ein sort, und wenn der Array zu groß ist, lauf 9 mal drüber und hol dir die höchsten Zahlen.

Wir kennen doch die Aufgabenstellung gar nicht. Wenn es wirklich 9 Variablen sein sollen ODER nicht das ganze Array sortiert sein muss ODER sie noch gar nicht verschachtelte Schleifen hatten ODER das Array nicht verändert werden soll ODER... ODER..., DANN bietet sich das einfach an. Think simple ;)
 
H

hüteüberhüte

Gast
...ok, widmen wir uns nochmal diesem Problem und tragen alle Möglichkeiten zusammen (Kommentare im Code):

Java:
    public static void main(String[] args) {
        final int ARR_LENGTH = 1000;
        final int ARR2_LENGTH = 9;

        int[] array = new int[ARR_LENGTH];
        // mit zufälligen Zahlen füllen
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * ARR_LENGTH * 10.0);
            // 0 bis (ARR_LENGTH * 10 - 1)
        }


        // 1. Möglichkeit, mit zusätzlichem Array

        // kopieren...
        int[] arraySorted = java.util.Arrays.copyOf(array, array.length);

        // sortieren (imho Quicksort)...
        java.util.Arrays.sort(arraySorted);

        // größte Elemente finden...
        int[] array2 = new int[ARR2_LENGTH];
        for (int i = 0; i < array2.length; i++) {
            array2[i] = arraySorted[arraySorted.length - 1 - i];
        }

        // ausgeben...
        System.out.println(java.util.Arrays.toString(array2));


        // 2. Möglichkeit, modifizierter Selectionsort

        arraySorted = java.util.Arrays.copyOf(array, array.length);
        array2 = new int[ARR2_LENGTH];
        for (int i = 0; i < array2.length; i++) {
            int maxIndex = i;
            for (int j = i; j < arraySorted.length; j++) {
                if (arraySorted[j] > arraySorted[maxIndex]) {
                    maxIndex = j;
                }
            }
            int tmp = arraySorted[i];
            arraySorted[i] = arraySorted[maxIndex];
            arraySorted[maxIndex] = tmp;

            array2[i] = arraySorted[i];
        }

        // ausgeben...
        System.out.println(java.util.Arrays.toString(array2));


        // 3. Möglichkeit, Selectionsort, der das Array nicht verändert

        array2 = new int[ARR2_LENGTH];
        Set<Integer> indices = new HashSet<Integer>(array2.length);

        for (int i = 0; i < array2.length; i++) {
            int max = -1;
            int maxIndex = -1;
            for (int j = 0; j < array.length; j++) {
                if (!indices.contains(j) && array[j] > max) {
                    max = array[j];
                    maxIndex = j;
                }
            }
            array2[i] = max;
            indices.add(maxIndex);
        }

        // ausgeben...
        System.out.println(java.util.Arrays.toString(array2));


        // 4. Möglichkeit, wie Selectionsort, aber ggf. ungenau

        array2 = new int[ARR2_LENGTH];

        // erster Schritt...
        int max = -1;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        array2[0] = max;

        // zweiter Schritt...
        for (int i = 1; i < array2.length; i++) {
            max = -1;
            for (int j = 0; j < array.length; j++) {
                if (array[j] < array2[i - 1] && array[j] > max) {
                    max = array[j];
                }
            }
            array2[i] = max;
        }

        // ausgeben...
        System.out.println(java.util.Arrays.toString(array2));
    }

...dann ist die Ausgabe z.B.:

Code:
[9999, 9978, 9978, 9978, 9970, 9962, 9960, 9959, 9934]
[9999, 9978, 9978, 9978, 9970, 9962, 9960, 9959, 9934]
[9999, 9978, 9978, 9978, 9970, 9962, 9960, 9959, 9934]
[9999, 9978, 9970, 9962, 9960, 9959, 9934, 9897, 9870]

...hierbei sieht man, das über die dreifach vorkommende 9978 bei der letzten Möglichkeit einfach "hinweggegangen" wurde...
 
H

hüteüberhüte

Gast
BubbleSort wäre imho nicht schneller. Es ist die Frage, ob das Array verändert werden darf oder nicht. Dann könnte man jetzt noch Zeittestts durchführen -> Quicksort vs. modifizierten Selectionsort. Ab wie viel gesuchten Zahlen ist was schneller usw
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
M Panels untereinander anordnen Java Basics - Anfänger-Themen 3
A Erste Schritte Daten untereinander anordnen Java Basics - Anfänger-Themen 9
T JLabel richtig anordnen? wie gehts? Java Basics - Anfänger-Themen 9
M halt anordnen Java Basics - Anfänger-Themen 4
M BAPI GetList Liste anordnen Java Basics - Anfänger-Themen 3
T Ziffern anordnen Java Basics - Anfänger-Themen 3
T Textfelder und ComboBoxen anderst anordnen? Java Basics - Anfänger-Themen 4
J JButtons mit GridBagLayout anordnen Java Basics - Anfänger-Themen 9
G JLabel - Icon und Text untereinander anordnen? Java Basics - Anfänger-Themen 2
J Ausgabe mit BufferedWriter exakt untereinander anordnen Java Basics - Anfänger-Themen 10
J JLabel / JTextField linksbündig anordnen Java Basics - Anfänger-Themen 3
N In einer JToolbar das Icon ganz rechts anordnen Java Basics - Anfänger-Themen 5
G STRING IN DATEI NEU ANORDNEN Java Basics - Anfänger-Themen 3
G Text in Panel anordnen Java Basics - Anfänger-Themen 6
J Zeichenfläche anordnen Java Basics - Anfänger-Themen 5
P JRadiobuttons "von Hand" anordnen Java Basics - Anfänger-Themen 13
T Karten zufällig anordnen Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
H Höchsten int-Wert(key) aus einer Hashmap suchen Java Basics - Anfänger-Themen 19
J Wie kann ich den höchsten Wert eines Arrays ermitteln? Java Basics - Anfänger-Themen 17
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Elemente in einem Array Java Basics - Anfänger-Themen 5
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
U Char zu einem String machen Java Basics - Anfänger-Themen 1
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
E JPanels auf gleicher Höhe (Y-Achse) in einem FlowLayout platzieren Java Basics - Anfänger-Themen 7
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
A Zu einem bestimmten Ort im Code springen Java Basics - Anfänger-Themen 11
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben