Algorithmus verbessern

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Sry, ich hab keine Ahnung, was ich dem Topic für nen Titel geben soll, geschweigeden, wo es am Besten aufgehoben is.

Ich möchte testen, ob ich von einem bestimmten Datum an (z. B. 14.7.2005) auf ein anderes Datum (z. B. 30.6.2005) komme, wenn ich immer die selbe Anzahl, an Stunden, Tagen, Wochen, ... abziehe. Da diese Differenzen aber sehr groß und "das Abzuziehende" dagegen relativ klein seien kann, hab ich Angst um meine Performance. Momentan fällt mir nur das hier ein:

Code:
differenz = -3;
GregorianCalendar now = new GregorianCalendar(jahr, monat, tag);
GregorianCalendar before = new GregorianCalendar(jahrB, monatB, tagB);
while (now.getTimeInMillis() > before.getTimeInMillis()) {
    now.add(Calendar.DATE, differenz);
}
if (now.getTimeInMillis() == before.getTimeInMillis()) {
    return true;
}
else {
    return false;
}

Und das lahmt vermutlich bei unterschieden von mehreren Jahren, aber gleichzeitig immer nur wenige Tage abgezogen werden.
 
B

Beni

Gast
???:L

Die Differenz in Millisekunden berechnen.
Die Länge einer Stunde/Tages/Woche... in Millisekunden berechnen.

Differenz modulo (%-Operator) Länge rechnen. Falls es 0 ergibt, geht es :wink:
 

The_S

Top Contributor
Funzt doch net! Fogender Code

Code:
import java.util.*;

public class test {
	
	public static void main(String[] args) {
		
		GregorianCalendar eins = new GregorianCalendar(2006, 6, 20);
		GregorianCalendar zwei = new GregorianCalendar(2005, 6, 20);
		long woche = 1000 * 60 * 60 * 24 * 365;
		long diff = eins.getTimeInMillis() - zwei.getTimeInMillis();
		if ((diff % woche) == 0) {
			System.out.println(true);
		}
		else {
			System.out.println(false);
		}
		while (eins.getTimeInMillis() > zwei.getTimeInMillis()) {
			eins.add(Calendar.DATE, -365);
		}
		if (eins.getTimeInMillis() == zwei.getTimeInMillis()) {
			System.out.println(true);
		}
		else {
			System.out.println(false);
		}
	}
}

gibt zuerst false und dann true aus! Oder habsch da jetzt nen Denkfehler drin!?
 

hugo

Bekanntes Mitglied
Ist der 20.06.2006 nicht der 366. Tag? Warum das dann mit dem Calendar.add funktioniert, weiß ich nicht. Bin aber auch schon auf das Phänomen gestoßen, dass er dort zusätzlich einen Tag abzieht.
 

The_S

Top Contributor
Du kannst das auch für 2010 und 2009 oder 2011 und 2010, ... machen! Kommt immer des Ergebnis (hat also nix mit Schaltjahren zu tun (mal davon abgesehen, dass 2005 und 2006 auch kein Schaltjahr ist :wink: )), oder auf was wolltest du jetzt raus mit "366. Tag"?

BTW: GregorianCalendar(2006, 6, 20) ist der 20.7.2006
 

hugo

Bekanntes Mitglied
Das mit dem Schaltjahr hatte ich nicht gemeint. Finde gerade nicht die richtigen Worte. Aber bei der Berechnung der Differenz von diff und woche kommen 347 Tage heraus. Warum weiß ich aber noch nicht.
 

The_S

Top Contributor
Dann geb bescheid, wenn de ne Lösung gefunden hast (ja, ich such auch weiter :wink: ), weil ich nämlich gerade mal rumexperimentiert hab und die vollständige Berechnung mit meiner alten (funktionierenden Methode) bei ca. 5 Berechnungen pro Satz und ca. 1000 Sätzen auf einem 2GHz Pentium 4 mit 1GB Arbeitsspeicher (ka ob der RAM hier relevant is ???:L ) und einem Abstand von 15 Jahren, bei einer Differenz von 2 Tagen probiert hab. Joa, der PC braucht an die 30 Sekunden um das auszurechnen! Das is zuviel!
 

hugo

Bekanntes Mitglied
Rein Theroretisch sollte do woche / 1000 / 60 / 60 / 24 = 365 sein. Wenn man sich das aber mal ausgeben lässt kommt man auf 17! :bahnhof:

Bis zu 25 Tagen stimmt der Wert. Ab dem 25. wird auf -24 umgesprungen. Hoffentlich kann mir das mal jemden erklären.
 

hugo

Bekanntes Mitglied
Da lag der Fehler näher als man denkt. Wenn man Woche als long berechnen will, sollte man auch die Werte dafür als long bezeichnen. Sonst kommt es zu einem Überlauf bei den int-Werten.

Also wie folgt müsste es heißen:
Code:
long woche = 1000l * 60l * 60l * 24l * 365l;
 

The_S

Top Contributor
Wenn ich das jetzt richtig verstanden habe funktioniert der Algo von Beni, wenn man die Werte alle als long bezeichnet!?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
O Newton Algorithmus Java Allgemeine Java-Themen 1
CptK Backpropagation Algorithmus Allgemeine Java-Themen 6
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
L Algorithmus für Poker-Hände Allgemeine Java-Themen 7
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
RoliMG präfix zu infix algorithmus Allgemeine Java-Themen 6
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
C Algorithmus für Array Allgemeine Java-Themen 9
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
S Algorithmus für Sudoku Allgemeine Java-Themen 17
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
I hash-algorithmus Allgemeine Java-Themen 9
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben