Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. /**
  2.  * arr - array da ordinare
  3.  * start - L'inzio della sequenza che dev'essere ordinata.
  4.  * end - La fine della sequenza che dev'essere ordinata.
  5.  */
  6. void quickSortRecursive(int arr[], int start, int end){
  7.     if(start < end){
  8.         int indice_pivot = partition( arr, start, end );
  9.         quickSortRecursive(arr, start, indice_pivot-1); //Autoattivazione lato sinistro
  10.         quickSortRecursive(arr, indice_pivot+1, end);  //Autoattivazione lato destro
  11.     }
  12. }
  13.  
  14. //Restituisce l'indice del pivot ed effettua gli scambi
  15. int partition (int arr[], int start, int end){
  16.     int x = arr[end];
  17.     int i = (start - 1);
  18.    
  19.     for (int j = start; j <= end- 1; j++){
  20.         if (arr[j] <= x){               //confronta ogni elemento sinistro con l'ultimo elemento dell'array/subarray
  21.             i++;
  22.             swap (&arr[i], &arr[j]);
  23.         }
  24.     }
  25.     swap (&arr[i + 1], &arr[end]);
  26.     return (i + 1);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement