Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

30 wiersze
577B

  1. template <class C>
  2. void rec_merge_sort (C& a, int o, int n)
  3. { // sortiere Eintraege [o,o+n-1]
  4. if (n==1) return;
  5. // teile und sortiere rekursiv
  6. int n1=n/2;
  7. int n2=n-n1;
  8. rec_merge_sort(a,o,n1);
  9. rec_merge_sort(a,o+n1,n2);
  10. // zusammenfuegen
  11. C b(n); // Hilfsfeld
  12. int i1=o, i2=o+n1;
  13. for (int k=0; k<n; k=k+1)
  14. if ((i2>=o+n) || (i1<o+n1 && a[i1]<=a[i2]))
  15. b[k] = a[i1++];
  16. else
  17. b[k] = a[i2++];
  18. // umkopieren
  19. for (int k=0; k<n; k=k+1) a[o+k] = b[k];
  20. }
  21. template <class C>
  22. void mergesort (C& a)
  23. {
  24. rec_merge_sort(a,0,a.size());
  25. }