|
2 | 2 |
|
3 | 3 | author: Sebastian Zug, Galina Rudolf & André Dietrich |
4 | 4 | email: sebastian.zug@informatik.tu-freiberg.de |
5 | | -version: 1.0.10 |
| 5 | +version: 1.0.11 |
6 | 6 | language: de |
7 | 7 | narrator: Deutsch Female |
8 | 8 | comment: Generelle Container und Datenkonzepte, Collections, Implementierung in Csharp und Anwendung der generischen Collections |
@@ -473,7 +473,7 @@ wir dazu die wohl häufigste Frage an einen Container: _"Enthältst du Element x |
473 | 473 | | `List<T>` | lineare Suche | $O(n)$ | |
474 | 474 | | `SortedList<K,V>` | binäre Suche (sortiert)| $O(\log n)$| |
475 | 475 | | `HashSet<T>` | Hash-Lookup | $O(1)$ | |
476 | | - |
| 476 | +Gwangju |
477 | 477 | Hier geht es nicht mehr um den Faktor 2 oder 5, sondern um den Unterschied |
478 | 478 | zwischen Sekunden und Mikrosekunden – und der wächst mit der Datenmenge. Das |
479 | 479 | folgende Beispiel füllt drei Container mit `N` Elementen und führt anschließend |
@@ -502,21 +502,23 @@ class Program |
502 | 502 | hash.Add(i); |
503 | 503 | } |
504 | 504 |
|
505 | | - // Wonach gesucht wird (deterministisch, damit fair vergleichbar) |
| 505 | + // Wonach gesucht wird: fester Seed => bei jedem Lauf dieselben |
| 506 | + // Suchwerte, damit alle Container fair dieselben Anfragen erhalten. |
| 507 | + var rnd = new Random(42); |
506 | 508 | var queries = new int[M]; |
507 | 509 | for (int i = 0; i < M; i++) |
508 | | - queries[i] = (i * 2654435761L % N) > 0 ? (int)(i * 2654435761L % N) : 0; |
| 510 | + queries[i] = rnd.Next(N); |
509 | 511 |
|
510 | 512 | // --- Messung -------------------------------------------------- |
511 | 513 | Console.WriteLine($"N = {N:N0} Elemente, M = {M:N0} Suchanfragen\n"); |
512 | 514 |
|
513 | | - Measure("List<int> O(n) ", () => { |
| 515 | + Measure("List<int> O(n) ", () => { |
514 | 516 | foreach (var q in queries) _ = list.Contains(q); |
515 | 517 | }); |
516 | 518 | Measure("SortedSet<int> O(log n)", () => { |
517 | 519 | foreach (var q in queries) _ = sorted.Contains(q); |
518 | 520 | }); |
519 | | - Measure("HashSet<int> O(1) ", () => { |
| 521 | + Measure("HashSet<int> O(1) ", () => { |
520 | 522 | foreach (var q in queries) _ = hash.Contains(q); |
521 | 523 | }); |
522 | 524 | } |
|
0 commit comments