Hallo,
vlt. kann mir der eine oder andere von Euch auf die Sprünge helfen, ich
finde hier keine optimale Lösung.
In meinem Programm möchte ich (viele) Werte in einem array nach einem
vergleichen von einer Vorlage indizieren/markieren.
Das Array ist eine Struktur aus zwei Variablen. im ersten Wert ist der
Vergleichswert, im zweiten Wert kommt ein Index von 1...16656 rein
(abhängig vom Vergleichswert).
1 | struct MeinWert []
|
2 | {
|
3 | int Vergleichswert;
|
4 | int index;
|
5 | }
|
Nun habe ich ein weiteres Array mit ähnlichem Aufbau das Wertebereiche
für den Vergleichswert festlegt:
1 | struct Gruppen []
|
2 | {
|
3 | int MinWert;
|
4 | int MaxWert;
|
5 | int Index;
|
6 | }
|
und da ahnt man dann auch schon was ich vor habe: fällt der obere
Vergleichswert zwischen Min- und Maxwert des zweiten array, so übernehme
ich den Index des unteren array in den Index des oberen array. Somit
habe ich die Werte im oberen array klassifiziert.
Mein code sieht derzeit so aus
1 | for (int i = 0; i < MeinWert.Length; i++)
|
2 | {
|
3 | for (int n = 0; n < Gruppen.Length; n++)
|
4 | {
|
5 | if ((MeinWert[i].Vergleichswert >= Gruppen[n].MinWert) || (MeinWert[i].Vergleichswert <= Gruppen[n].MaxWert))
|
6 | {
|
7 | MeinWert.index = Gruppen.index;
|
8 | return;
|
9 | }
|
10 | }
|
11 | }
|
so, das ganze funktioniert, aber wirklich erträglich ist das nicht.
Solange man eine Hand voll Werte hat mag das OK sein, aber MeinWert[]
und Gruppen[] sind bei mir beides sehr groß, das dauert mehrere Minuten
bis das Programm den Vergleich durch hat :-(
Sieht jemand eine Lösung das ganze zu beschleunigen? die Werte müssen
eben irgendwie auf Min-Max geprüft werden und es wäre schön wenn das
etwas schneller gehen würde. Vlt. gibt es ja auch schon "etwas fertiges"
in irgendeiner Klassenbibliothek!?
Ich bin um jeden Tipp dankbar, auch wenn ich mir einfach nur bestätigt
dass es eben doch nicht schneller geht :-(
Danke und Gruß