Simple2012

Untitled

Feb 17th, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5.  
  6.  
  7.  
  8. int partition(int *lista, int l, int r){
  9.     int p = median_of_three(lista,l,r);
  10.     while(l<r){
  11.         if (lista[l] < lista[p])
  12.             l++;
  13.         else if (lista[r] > lista[p])
  14.             r++;
  15.         else
  16.             swap (lista[r]m lista[l]);
  17.     }
  18.     if (lista[l] < list[p])
  19.         l++;
  20.     swap(lista[l], lista[p]);
  21.     return l;
  22. }
  23.  
  24. void quicksort (int *lista, int l, int r){
  25.     if (r-1 < l)
  26.         return;
  27.     int piv = partition(lista, l, r);
  28.     quicksort(lista, l, piv-1);
  29.     quicksort(lista, piv+1, r);
  30. }
  31.  
  32. int median_of_three(int *list, int left, int right){
  33.     int middle = (left+right)/2;
  34.  
  35.     if (list[middle] < list[left])
  36.         swap(list[right], list[middle]);
  37.     if (list[right] < list[left])
  38.         swap(list[left], list[right]);
  39.     if (list[right] < list[middle])
  40.         swap(list[middle], list[right]);
  41.     return right;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment