Schnellste Weg, um zu überprüfen, ob alle Elemente in einem array gleich sind
Was wäre der Schnellste Weg, vorzugsweise native java zu überprüfen, ob alle Elemente eines Arrays sind die gleich einem Wert sind? (bezeichnet hier durch n)
Bisher habe ich:
boolean check = true;
int len = times.length;
for(int a = 0; check && a < len; a++) {
check = times[a]==n && check;
}
Also, wenn jedes element ist gleich einem Wert, der check ist auf true gesetzt, ansonsten auf false gesetzt ist.
EDIT: Wäre das schneller?
boolean check = true;
int len = times.length
int a = 0;
while(a < len && times[a]==n) {
a++;
}
check=(a==len);
Ok, nach einem Blick auf die Antworten hier verstehe ich den code so klein wie seine gonna bekommen, also werde ich schauen müssen, in threads und parallel processing, danke an alle für die Hilfe und die links
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Algorithmus ist
O(n)
das ist der Schnellste Weg zu prüfen, alle Elemente einer Liste, weil Sie nur zu prüfen jedes element nur einmal.Nun, nur weil das ist die Schnellste
algorithm
zu finden, wenn alle Elemente gleich einem Wert bedeutet nicht, dass Sie bereits optimiert haben, es zu seinem vollen potential.Dieser dann lässt Platz für eine
multi-threaded/multiprocessor
Umsetzung.Einer Lösung mit mehr Kernen oder threads aufteilen des Arrays in die Menge der Threads/Kerne, die Sie wollen, gleichzeitig zu Bearbeiten, d.h. wenn Sie ein array von 100 Elementen und wollen 10 threads gleichzeitig ausführen-- split das array in 10 Stücke und führen Sie jeden Abschnitt auf der Reihe.
Einige psudo-code:
Dies ist am besten, wenn das array sehr groß
In Java 8 haben, könnten Sie den Stream-API:
Das allein wird nicht schneller sein als die Iteration über das array direkt. Aber wenn du dann wechseln Sie zu einer parallel stream, es könnte deutlich schneller auf große arrays. Und wenn die Leistung ein Problem darstellt, ist es vermutlich große arrays, die Sie interessieren.
Einen parallelen stream erlaubt die array-Scans werden parcelled aus mehreren threads, Scannen der Arrays mit parallel-CPUs oder Kerne.
werden kann
da Sie würde nie bekommen haben, die Zeile, es sei denn
check
wahr.Eine einfache und saubere Art und Weise:
Schreiben Sie es in einem kürzeren Weg :