Laufzeit

virtual12

Aktives Mitglied
Ich soll eine Klasse mit einer quadratischen Methode schreiben, deren Laufzeit auch quadratisch ist. Diese Methode bekommt ein double Array und soll den Abstand der beiden Werte zurückgeben, die sich am nächsten sind. Zum Beispiel also
{1, 2, 5, 7, 9, 11, 15, 21, 56, 23, 26} gibt 1 als kleinsten Abstand. Viele Ideen habe ich noch nicht, aber ich versuche mich mal mit einem kleinen Anfang:
Code:
double[] abstand = new double[1000];
for(int i = 0; i<abstand.length; i++) {
for(int j = 0; j<abstand.length; j++) {
Math.abs(abstand[i][j]);
System.out.println(abstand);
}
}
Ist nur ein sehr grober Ansatz. Habt ihr Ideen, wie ich das angehen könnte?
 

Bitfehler

Bekanntes Mitglied
Überleg doch mal welche logischen Schritte du machen musst.
  1. Wähle eine Zahl aus der vorhandene Menge aus (erste for-Schleife)
  2. Wähle eine zweite Zahl aus vorhandenen Menge aus, die ungleich der bereits gewählten ist
  3. Berechne den Abstand zwischen den beiden Werten
  4. Hier bist du nun dran. Was muss mit dem errechten Abstand gemacht werden?
  5. Wieder hole das Vorgehen bis alle Kombinationen durch sind
Nenne das Array mal bitte nicht abstand, das verwirrt nur, da es ja keine Abstände enthält.
 

stg

Top Contributor
Mit "quadratischer Laufzeit" kann ich ja was anfangen, aber was bitte schön soll denn eine "quadratische Methode" in diesem Zusammenhang sein?

Wie man das Problem in quadratischer Laufzeit lösen kann hat Bitfehler dir ja nun schon skizziert. Das Problem ist aber auch in quasi-linearer Zeit lösbar, falls das für dich eine Rolle spielt.
 

virtual12

Aktives Mitglied
Okay, würde jetzt so etwas daraus machen:
Code:
double[] a = new double[1000];
    public static void naechstesPaarQuad() {
        for(int i = 0; i < a.length; i++) {
            for(int j = 0; j < a.length; j++) {
                if(Math.abs(a[i] - a[j]));
                else
                    Math.abs(a[i] + a[j]);
            }
        }
       
       
    }
Funktioniert aber leider nicht.Was mache ich falsch?
 

virtual12

Aktives Mitglied
Sorry, das mit der quadratischen Methode war etwas unglücklich formuliert. Da sie eine quadratische Laufzeit ausgibt, werde ich die Methode nachher so nennen.
 

Bitfehler

Bekanntes Mitglied
Code:
if(Math.abs(a[i] - a[j]));
Magst du mir mal erklären, was das machen soll?

EDIT: Da ist irgendwas verloren gegangen, nun besser
 

virtual12

Aktives Mitglied
wenn ich zum Beispiel diese Zahlen hätte (2.0, 3.0, 5.0, 7.0, 9.0) würde ich der Reihe nach durchgehen und alle Paare miteinander vergleichen, also erst 2.0 mit 3.0 ergibt 1.0, dann 3.0 mit 5.0 ergibt 2.0, dann 5.0 mit 7.0 ergibt 2.0 usw. Dann sieht man ja, dass der geringste Abstand von einem Paar 1.0 ist. Aber ich muss die ganze Reihe durchgehen, weil der geringste Abstand kann ja auch erst bei dem letzten Paar auftreten.
 

stg

Top Contributor
@Bitfehler: mir wurde von jemandem gesagt, ich solle dabei Math.abs benutzen. Das wäre leichter. Vielleicht habe ich mich zu sehr daran gehalten.

Math.abs zu benutzen ist nicht nötig, aber vollkommen in Ordnung (sofern ihr das nutzen dürft)

Die Frage von Bitfehler war aber nicht darauf bezogen, sondern vielmehr darauf, was du mit dem Code-Schnipsel eigentlich ausdrücken willst.
In Worte übersetzt steht da:
"Wenn der Abstand von Zahl1 und Zahl2"
Was soll das nun bedeuten?
 

virtual12

Aktives Mitglied
Okay, eigentlich wollte ich sagen wenn das der kleinste Abstand ist, soll das ausgegeben werden, sonst soll das nächste Paar verglichen werden. Aber ich sehe gerade, ich muss ja erst die Reihe an Paaren durchgehen, um überhaupt entscheiden zu können, was das Paar mit dem kleinsten Abstand ist. Aber wie kann ich das als Code formulieren?
 

Meniskusschaden

Top Contributor
Werden die Zahlen in beliebiger Reihenfolge vorgegeben oder sind sie immer sortiert? Im zweiten Beispiel sind sie sortiert (2.0, 3.0, 5.0, 7.0, 9.0) und im ersten fast (die 56 könnte ja ein Versehen sein) {1, 2, 5, 7, 9, 11, 15, 21, 56, 23, 26}.
 

Meniskusschaden

Top Contributor
Ich meinte eigentlich diesen Ansatz:

wenn ich zum Beispiel diese Zahlen hätte (2.0, 3.0, 5.0, 7.0, 9.0) würde ich der Reihe nach durchgehen und alle Paare miteinander vergleichen, also erst 2.0 mit 3.0 ergibt 1.0, dann 3.0 mit 5.0 ergibt 2.0, dann 5.0 mit 7.0 ergibt 2.0 usw. Dann sieht man ja, dass der geringste Abstand von einem Paar 1.0 ist. Aber ich muss die ganze Reihe durchgehen, weil der geringste Abstand kann ja auch erst bei dem letzten Paar auftreten.
 

Meniskusschaden

Top Contributor
Falls du n Zahlen hast, ermittelst du die Lösung einfach nach deinem Ansatz und durchläufst anschliessend oder vorher noch n^2 Mal eine Schleife, die bei jeder Iteration irgendetwas Überflüssiges mit konstanter Laufzeit tut. Bezweifle aber stark, dass es wirklich so gedacht ist. :)
 

Bitfehler

Bekanntes Mitglied
wenn ich zum Beispiel diese Zahlen hätte (2.0, 3.0, 5.0, 7.0, 9.0) würde ich der Reihe nach durchgehen und alle Paare miteinander vergleichen, also erst 2.0 mit 3.0 ergibt 1.0, dann 3.0 mit 5.0 ergibt 2.0, dann 5.0 mit 7.0 ergibt 2.0 usw. Dann sieht man ja, dass der geringste Abstand von einem Paar 1.0 ist. Aber ich muss die ganze Reihe durchgehen, weil der geringste Abstand kann ja auch erst bei dem letzten Paar auftreten.

Genauso und nun machst du das im Code.
Und hast eine Variable, in der du die kürzeste Distanz speicherst. Bei deinem Verglich zweier Werte kommt ein Abstand heraus. Diesen Abstand vergleichst du dann mit dem bereits vorhandenen Abstand. Ist der neue kleiner als der alte, dann ist der neue Abstand der aktuell kürzeste. Wenn nicht, dann vergleich die nächsten Werte. Am Ende hast du dann den kürzesten Abstand.

Dabei ist es denn egal, ob das Array sortiert ist oder nicht. Eine Kleinigkeit musst du dabei aber beachten, das wirst du dann aber schon herausfinden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
W Array zur Laufzeit bearbeiten? Java Basics - Anfänger-Themen 31
D Objekterzeugungen mit zur Laufzeit variierenden Attributen Java Basics - Anfänger-Themen 7
J GroupLayout zur Laufzeit erweitern Java Basics - Anfänger-Themen 1
B Übersetzungszeit und Laufzeit Java Basics - Anfänger-Themen 3
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
H Laufzeit Java Basics - Anfänger-Themen 11
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
D Laufzeit von einfachem Programm Java Basics - Anfänger-Themen 21
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
M Methoden miteinander verbinden (Laufzeit) Java Basics - Anfänger-Themen 6
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
Streeber reale Laufzeit meines Programms ausgeben Java Basics - Anfänger-Themen 1
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
R Variablen Datentyp erst während Laufzeit festlegen Java Basics - Anfänger-Themen 6
S Klassentyp zur Laufzeit ändern? Java Basics - Anfänger-Themen 3
M Laufzeit und O-Notation Java Basics - Anfänger-Themen 3
M Variablen Variable zur Laufzeit erzeugen Java Basics - Anfänger-Themen 3
A Laufzeit von verschachtelter for-Schleife Java Basics - Anfänger-Themen 4
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
L Panels zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Laufzeit Java Basics - Anfänger-Themen 11
M Methodennamen zur Laufzeit ausgeben Java Basics - Anfänger-Themen 5
F JTable zur laufzeit füllen Java Basics - Anfänger-Themen 7
P GUI - Layout per Laufzeit erstellen/verändern? Java Basics - Anfänger-Themen 6
N Variablen VariableNamen auswirkung auf Laufzeit Java Basics - Anfänger-Themen 3
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
J Erste Schritte Zinseszinsberechnung Ermittlung Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
S Erste Schritte Weihnachtsbaum / Laufzeit O(n) Java Basics - Anfänger-Themen 9
E Laufzeit verkürzen Java Basics - Anfänger-Themen 14
A Threads Zur Laufzeit hinzufügen/entfernen Java Basics - Anfänger-Themen 10
D Classpath compiler zur Laufzeit aufrufen & lib-classpath Java Basics - Anfänger-Themen 6
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
B Laufzeit berechnen? Java Basics - Anfänger-Themen 7
S Klasse bei Laufzeit laden? Java Basics - Anfänger-Themen 2
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
K jButton zur Laufzeit hinzufügen Java Basics - Anfänger-Themen 22
D globale Variablen zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
A Frage zur Laufzeit / Optimierung Java Basics - Anfänger-Themen 2
N Laufzeit in Nanosekunden - in Minuten umrechnen Java Basics - Anfänger-Themen 6
alderwaran objekthierarchie darstellen während der laufzeit Java Basics - Anfänger-Themen 2
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Frage zur Laufzeit Java Basics - Anfänger-Themen 2
Luk10 Variablen zur Laufzeit ändern! Java Basics - Anfänger-Themen 7
G JAR zur Laufzeit nachladen Java Basics - Anfänger-Themen 2
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
A Applet Bild zu laufzeit hinzufügen Java Basics - Anfänger-Themen 4
C Frage zu Syntax-,Laufzeit-, Semantikfehler Java Basics - Anfänger-Themen 3
R JVM zur laufzeit manipulieren? Java Basics - Anfänger-Themen 4
S Zur Laufzeit Strings Compilieren Java Basics - Anfänger-Themen 5
A Objekte während der Laufzeit erstellen Java Basics - Anfänger-Themen 3
A Objektzugriff zur Laufzeit ändern Java Basics - Anfänger-Themen 20
G Text eines JLabels zur Laufzeit ändern Java Basics - Anfänger-Themen 4
M Laufzeit von Programmen Java Basics - Anfänger-Themen 3
A Jar-Archive zur Laufzeit erstellen Java Basics - Anfänger-Themen 3
G Zu Laufzeit von Tastatur einlesen Java Basics - Anfänger-Themen 11
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
A Neue Objekte zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
S Ausdruck zur Laufzeit auswerten Java Basics - Anfänger-Themen 10
G Anzahl Textfelder zur Laufzeit verändern. Java Basics - Anfänger-Themen 4
Z Benutzerdaten währen Laufzeit speichern Java Basics - Anfänger-Themen 2
K JProgressbar, zur laufzeit steuern Java Basics - Anfänger-Themen 7
V Vektoren zur Laufzeit erzeugen Java Basics - Anfänger-Themen 7
N zur Laufzeit gefundene class-Datei verwenden - wie geht das? Java Basics - Anfänger-Themen 2
G Look and Feel zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
K Chart zur Laufzeit erstellen und aktualisieren Java Basics - Anfänger-Themen 2
G JAR: Externe Dateien zur Laufzeit aufrufen Java Basics - Anfänger-Themen 12
C Variablen zur Laufzeit erstellen? Java Basics - Anfänger-Themen 14
B Warum hat dieser einfache Algorithmus lineare Laufzeit? Java Basics - Anfänger-Themen 3
M JButton zur laufzeit erzeugen/ löschen Java Basics - Anfänger-Themen 3
B Laufzeit und Übersetzungszeit Java Basics - Anfänger-Themen 11
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
M Java Heap Space während der Laufzeit ändern Java Basics - Anfänger-Themen 2
M Klassen zur Laufzeit laden, aus einer jar heraus. Java Basics - Anfänger-Themen 14
A classpath zur Laufzeit erweitern Java Basics - Anfänger-Themen 4
G Anpassen einer JComboBox zur Laufzeit Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben