Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

31 rinda
612B

  1. template <class C>
  2. int qs_partition (C& a, int l, int r, int q) {
  3. std::swap(a[q],a[r]);
  4. q=r; // Pivot ist jetzt ganz rechts
  5. int i=l-1, j=r;
  6. while (i<j) {
  7. i=i+1; while (i<j && a[i]<=a[q]) i=i+1;
  8. j=j-1; while (i<j && a[j]>=a[q]) j=j-1;
  9. if (i<j)
  10. std::swap(a[i],a[j]);
  11. else
  12. std::swap(a[i],a[q]);
  13. }
  14. return i; // endgueltige Position des Pivot
  15. }
  16. template <class C>
  17. void qs_rec (C& a, int l, int r) {
  18. if (l<r) {
  19. int i=qs_partition(a,l,r,r);
  20. qs_rec(a,l,i-1);
  21. qs_rec(a,i+1,r);
  22. }
  23. }
  24. template <class C>
  25. void quicksort (C& a) {
  26. qs_rec(a,0,a.size()-1);
  27. }