Es sollen doch keine Arrays seinSortieren wie z.B. mit folgender Zeile vor der Ausgabe:
Java:Arrays.sort(array);
Und vor allem am Ziel vorbeiVielleicht schieße ich da auch etwas mit Kanonen um sich...
Ne, kommt da gar nicht vor (bis auf den Verweis aufs JavaDoc, wo ich's her hab). und wirklich komplexer als alles selber zu machen ist es nicht wirklich (vor allem nicht komplexer, als Filtern dafür zu missbrauchen )Das hast du doch von dieser Seite:
http://stackoverflow.com/questions/...s-for-calculating-mean-standard-deviation-etc
hehe
"simple" sei hier mal in ()-gesetzt
package javaapplication;
import java.util.Arrays;
import java.util.Random;
public class Temp {
private static int[] array = new int[0];
private static int min = 0;
private static int max = 0;
private static long sum = 0;
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 10; i++) {
add(random.nextInt(15) - 5);
}
System.out.println(Arrays.toString(array));
System.out.println("min = " + min);
System.out.println("max = " + max);
System.out.println("sum = " + sum);
System.out.println("avr = " + (double) sum / array.length);
}
private static void add(int i) {
int[] neu = new int[array.length + 1];
System.arraycopy(array, 0, neu, 0, array.length);
neu[neu.length - 1] = i;
if (i < min) {
min = i;
}
if (i > max) {
max = i;
}
sum += i;
array = neu;
}
}
[7, -3, 1, -5, 9, 5, 7, 4, -3, -2]
min = -5
max = 9
sum = 20
avr = 2.0
public static void main(String[] args) {
Random random = new Random();
long t1 = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
add(random.nextInt(15) - 5);
}
long t2 = System.currentTimeMillis();
// System.out.println(Arrays.toString(array));
System.out.println("min = " + min);
System.out.println("max = " + max);
System.out.println("sum = " + sum);
System.out.println("avr = " + (double) sum / array.length);
System.out.println(t2 - t1);
}
int[] neu = new int[array.length + 1];
System.arraycopy(array, 0, neu, 0, array.length);
neu[neu.length - 1] = i;
"Keiner fragt noch Code, aber eine Person liefert trotzdem eine (*die* schlechtmöglichsten) Lösung" fehlt da aber.
Ja und Nein. Listen können intern auch nur Arrays sein.Arrays (richtig "gemacht"): schnell, fix
Listen: langsam, dynamisch
Stimmt ihr mir da wenigstens zu?
Müsste O(n^2) sein, wo soll denn das dritte *n herkommen?Übrigens... Die Laufzeit oben müsste (n*n) sein (oder ist es sogar mehr? oder ist es sogar n*n*n?)
Jedes Mal muss er da keineswegs ran Außerdem dürfte der recht schnell sein (wenn ich grad den richtigen GC im Kopf hab), gibt ja kaum Objekte, die überleben, das meiste ist ja Garbage..damit der Speicher nicht unendlich wird, muss der GC jedes Mal ran.
ich brauche nur die finalen Werte wie Min/Max und ggf. die Summe.
Klar- ich kann beim Einlesen jeweils Min/Max neu bewerten, dachte nur,
dass es evt. eine Varinate gibt, alles in eine Liste/Array o.ä. zu schieben
und mit einer Methode .Max oder .Min analog wie Math.Min oder Math.Max
die Daten abzugreifen.
Es geht mir nur drum, dass es am schnellsten geht. bzw ich wieder was neues
lerne
Eine machbare Variante habe ich schon
In der Standard Api nicht, nein. Aber wie gesagt, es wurde eine Lib vorgeschlagen. Oder selber machen und nicht das von mir heranziehen...
Mit schlecht gemachten Arrays meinte ich sowas wie die Array-Benutzung in deinem Beispiel, da wären einige Listen schneller@mrBrown: Arrays können niemals langsam sein. Es kommt immer darauf an, was man mit anstellen möchte. Listen hingegen sind erst mal langsam, da eine Methode aufgerufen werden muss. Aber langsam ist hier seeehr relativ.
In der Standard Api nicht, nein.
Ein Vector geht zwar auch, ist aber nicht das Empfohlene in deinem Fall (außer du brauchst es thread-safe), besser wäre ArrayList (oder ganz ohne zwischenspeichern)ich habe es inzwischen mit einem Vector gelöst.
Der macht exakt, was ich will und liefert meine Ergebnisse.
Zum Lernen bist du doch hierDanke.
Seid mir nicht böse, ich habe nicht ansatzweise euer Niveau und das Wissen,
so dass ich es bewerten oder gar abschätzen kann.
Ich kann nur sagen, es läuft für meine Zwecke und auch performant..Unter
200msec.
If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector.
Hallo
ich habe es inzwischen mit einem Vector gelöst.
Der macht exakt, was ich will und liefert meine Ergebnisse.
Danke euch allen für den wertvollen Input