Methoden Zahlen austauschen

Tarol

Mitglied
Guten Abend,


Ich zerdenke mein Problem schon mehrere Stunden...
Und zwar möchte ich Werte eines Arrays mit Zahlen ersetzen.

Java:
int[] array = new int[]{3,5,6,7,8,2};

Die höchste Zahl soll mit dem Wert 6(Anzahl der Zahlen) ersetzt werden, die zweithöchste mit 5, usw.

Aussehen sollte mein array dann in etwa so: 2,3,4,5,6,1

Wie könnte ich das am besten lösen?

Es werden später dann etwa 20-30 Werte sein, sonst hätte ich mit if Bedingungen gearbeitet.

liebe Grüße
Tarol
 

27sharp

Mitglied
Hay,

Du kannst hier mit Schleifen Arbeiten, dabei wird dir die Methode Array.lenght helfen.

Gruß
 
Zuletzt bearbeitet:

Tarol

Mitglied
Hi,

Danke mal für die schnelle Antwort.
Aber ich habe deine Methode schon versucht, das Problem dabei ist doch das ich vorher das Array durchlaufen muss um zu sehen welcher Wert der höchste ist?
Der vorher-höchste muss dann auch immer wieder um 1 reduziert werden..
Denke ich falsch?

Gruß
 

Dompteur

Top Contributor
Ich würde da einen anderen Ansatz wählen:
  • Definiere eine neue Klasse "Eintrag" mit den Feldern "wert" und "altePosition"
  • Implementiere in dieser Klasse das Interface "Comparable" so, dass es nach "wert" sortierbar wird.
  • Erzeuge eine ArrayList<Eintrag> und befülle es mit deinen Daten.
    Das sieht dann etwa so aus: (3,1), (5,2), (6,3), (7,4), (8, 5), (2,6)
    Also der Wert aus deinem Array und die bisherige Position im Array.
  • Sortiere das ganze. Das Ergebnis sieht dann so aus:
    (2,6), (3,1), (5,2), (6,3), (7,4), (8, 5)
  • Jetzt überschreibe dein Array.
    Dazu iterierst du in einer Schleife über ArrayList. Du brauchst dabei den Index ("index") des Objekts im sortierten Array und vom Objekt die Instanz-Variable "altePosition".
    Dann sieht die Zuweisung so aus: array[altePosition] = index + 1;
 

Tarol

Mitglied
Danke dir Dompteur!

Dein Ansatz hat mich über meine Hürde gebracht!

Ich habe aber ein 2-dimensionales Array verwendet, denn ich hatte vergessen zu sagen, die Zahlen müssen an Ort und Stelle bleiben im Array.

Ich habe die zweite Dimension im Array verwendet, um die Position zu merken, die erste wurde ganz einfach sortiert:

Eingabe: 1,5,9,7,3

1,0 / 5,1 / 9,2 / 7,3 / 3,4
1,0 / 3,4 / 5,1 / 7,3 / 9,2

Nun kann ich die Werte mit den Punkten austauschen und sie wieder in meine Excel Tabelle einfügen.

Sorry für die sehr verwirrende Erklärung.

Aber danke für die Hilfe!!

Gruß
 

Flown

Administrator
Mitarbeiter
Also ich seh das jetzt als Overkill an zu sortieren. Wenn man jeweils das Minimum sucht, ist man viel schneller am Ziel:

Java:
private static int[] getOrder(int[] array) {
  final int[] order = new int[array.length];
  final boolean[] visited = new boolean[array.length];
  int numeration = 1;
  for (int i = 0; i < order.length; i++) {
    int minIndex = 0;
    boolean isFirstElement = true;
    for (int j = 0, min = 0; j < array.length; j++) {
      if (!visited[j] && (isFirstElement || array[j] < min)) {
        min = array[j];
        minIndex = j;
        isFirstElement = false;
      }
    }
    order[minIndex] = numeration++;
    visited[minIndex] = true;
  }
  return order;
}
 

Dompteur

Top Contributor
@Flown:
Deine Lösung hat die Komplexität O(n*n).
Wenn man die Daten sortiert und davon ausgeht, dass da ein einfacher Algorithmus wie beispielsweise Quicksort dahinter steckt, dann hast du eine Komplexität von O(n*log(n)).
D.h.: Wenn die Länge des Arrays steigt, dann steigt bei deiner Lösung der Aufwand viel schneller.
 

Flown

Administrator
Mitarbeiter
Aye du hast natürlich recht bei der Komplexität, aber es wäre ein weitaus intuitiver Ansatz für das Problem, da es genau der Problemstellung des TO entspricht.
 

Tarol

Mitglied
Danke für die weitere Antwort, aber ich habe hier meine Lösung mit einem simplen Sortieralgorythmus:

Java:
static void punkteFinden(String[][] daten) {

    		Arrays.sort(daten, new Comparator<String[]>() {
                @Override
                public int compare(final String[] entry1, final String[] entry2) {
                    final String time1 = entry1[0];
                    final String time2 = entry2[0];
                    return time1.compareTo(time2);
                }
            });
    	         	
        int punkte = 1;
            	daten[j][0] = String.valueOf(punkte);
                	punkte++;


         
            }
 
            for (final String[] s : daten) {
                 System.out.println(s[0] + " " + s[1]);
             }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
A Potenzmenge der Zahlen von 1 bis n Allgemeine Java-Themen 20
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
J Zahlen Abstand zur Null bestimmen Allgemeine Java-Themen 11
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
B Zufällig zwischen vorgegebenen Zahlen auswählen Allgemeine Java-Themen 6
P Rechnen mit sehr kleinen Zahlen Allgemeine Java-Themen 5
M Zahlen in Array anordnen Allgemeine Java-Themen 8
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Tesseract OCR mit Zahlen Allgemeine Java-Themen 1
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
F Zahlen zu Bits Allgemeine Java-Themen 3
S Überprüfen, ob 5 Zahlen nebeneinander liegen Allgemeine Java-Themen 5
R Große Zahlen in Worten abkürzen Allgemeine Java-Themen 10
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
D Operatoren Logischer Rightshift von negativen Zahlen auf Bit-Ebene Allgemeine Java-Themen 7
L 2-Dimensionaler String: Zahlen verschieben Allgemeine Java-Themen 10
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
H Fibonacci-Zahlen Allgemeine Java-Themen 5
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
E mit extrem langen Zahlen (als Zeichneketten) arbeiten Allgemeine Java-Themen 4
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
M ungerade zahlen auf 4 zahlen aufteilen Allgemeine Java-Themen 2
F Funktionsplotter komplexe Zahlen: geeignetes 3D-Koordinatensystem Allgemeine Java-Themen 16
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
N Bin to Dez und umgekehrt mit sehr großen Zahlen Allgemeine Java-Themen 2
T Modulo-Operator versagt bei zu großen Zahlen? Allgemeine Java-Themen 14
AssELAss String mit Zahlen mit Tausendertrennzeichen versehen Allgemeine Java-Themen 14
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
U (Java) Happy Numbers in Anlehnung an den Sieb des Eratosthenes (Glueckliche Zahlen) Allgemeine Java-Themen 1
J Array ohne vorher festgelegte Länge oder Wie wandle ich Zahlen in Zahlen mit anderen Basen um? Allgemeine Java-Themen 6
Cayton Bruchrechner stürzt bei eingabe negativer Zahlen ab Allgemeine Java-Themen 4
N Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen Allgemeine Java-Themen 7
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
I Java-Programm: Zahlen in Worte Allgemeine Java-Themen 22
H String auf Zahlen prüfen Allgemeine Java-Themen 4
V iText Textfelder mit Zahlen! Allgemeine Java-Themen 2
M Rechnen mit kleinen Zahlen langsamer!? Allgemeine Java-Themen 11
R Modulo mit negativen Zahlen Allgemeine Java-Themen 8
Luk10 Römische Zahlen in Java Allgemeine Java-Themen 7
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
GianaSisters ArrayList mit Zahlen Allgemeine Java-Themen 10
B User-Input aus Zahlen und Operatoren - beste Umsetzung? Allgemeine Java-Themen 8
S Fixe Zahlen vergleichen Allgemeine Java-Themen 4
D JTable -> 1Spalte nur zahlen Allgemeine Java-Themen 2
N Zahlen in Strings einer ArrayList sortieren Allgemeine Java-Themen 14
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
ModellbahnerTT Button mit Zahlen beschriften Allgemeine Java-Themen 1
J Zahlenkombination aus int-array, mit absteigenden Zahlen Allgemeine Java-Themen 6
P große double Zahlen und modulo Allgemeine Java-Themen 8
R Runden von Zahlen Allgemeine Java-Themen 3
J Zahlen Rechtsbuendig in File schreiben Allgemeine Java-Themen 3
W POI - Formatierung für Zahlen Allgemeine Java-Themen 4
MQue Zahlen mit Border Allgemeine Java-Themen 2
T ungerade zahlen berechnen Allgemeine Java-Themen 3
N Zahlen mit Nachkommastellen aus Textfeldern einlesen Allgemeine Java-Themen 6
P Algoritmus für 3er-Paare von n Zahlen Allgemeine Java-Themen 12
A Fibonacci-Zahlen & kopfgesteuerte Schleifen & Strukt Allgemeine Java-Themen 8
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
G die mittlere von 5 Zahlen nur mit if und else finden Allgemeine Java-Themen 48
M Rechnen mit sehr kleinen Zahlen Allgemeine Java-Themen 8
MQue Zahlen an alysieren Allgemeine Java-Themen 6
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
G Strings die Zahlen enthalten sinnvoll sortieren (A2 < A10 Allgemeine Java-Themen 4
F 3 Zahlen "vereinfachen" Allgemeine Java-Themen 5
C double Zahlen mit drei NachkommaStellen in String umwandeln Allgemeine Java-Themen 2
A testen ob Primzahl dauert bei größeren zahlen extrem lange Allgemeine Java-Themen 8
E Hex- Zahlen in Datei Allgemeine Java-Themen 4
G Umrechnen von grossen Zahlen ins Hex-System Allgemeine Java-Themen 3
S Zahlen sortieren Allgemeine Java-Themen 3
D Zahlen innerhalb eines Strings auslesen Allgemeine Java-Themen 3
P rechnen mit extrem grossen zahlen Allgemeine Java-Themen 2
X Logische Operatoren auf binären Zahlen Allgemeine Java-Themen 2
F Array mit Zahlen drin sortieren Allgemeine Java-Themen 2
M Hilfe: Lotto: die 6 häufigsten generierten zahlen ausgeben Allgemeine Java-Themen 13
O String auf zahlen prüfen (java 1.3) Allgemeine Java-Themen 4
G Methode, die Buchstaben in Zahlen umwandelt? Allgemeine Java-Themen 13
S Integer-Zahlen in Excel-Sheet schreiben Allgemeine Java-Themen 10
M Lange Zahlen in Java Allgemeine Java-Themen 4
C zahlen einlesen Allgemeine Java-Themen 2
thE_29 Wie hex Zahlen darstellen Allgemeine Java-Themen 3
G Zahlen vergleichen Allgemeine Java-Themen 5
S Rechnen mit float Zahlen Allgemeine Java-Themen 2
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
T Objekt dynamisch neu erstellen/ austauschen Allgemeine Java-Themen 9
Y JARs austauschen zur Laufzeit Allgemeine Java-Themen 11
T Standard LAF austauschen Allgemeine Java-Themen 3
W Columns austauschen/verschieben von jtable Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben