Advertisement
darkjessy94

quicksort con vector - l'arocca

Oct 17th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <vector>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void QuickSort(vector<int> &a, int l, int r);
  7. int partiziona(vector<int> &a, int l, int r);
  8. void scambia(int &a, int &b);
  9.  
  10. int main()
  11. {
  12.     cout<<"Inserisci il numero di elementi da ordinare del vettore: ";
  13.     int tot;
  14.     cin>>tot;
  15.     vector<int> arr1;
  16.     int x;
  17.     cout<<"Inserimento: "<<endl;
  18.     for(int i=0; i < tot ; i++){
  19.         cin>>x;
  20.         arr1.push_back(x);
  21.     }
  22.     cout<<"\nQuickSort"<<endl;
  23.     QuickSort(arr1,0,tot-1); //tot-1 = arr1.size()-1;
  24.     for(auto z : arr1)
  25.         cout<<"\n"<<z;
  26.     return 0;
  27. }
  28.  
  29. void QuickSort(vector<int> &a, int l,  int r){
  30. if(l >= r)return;
  31.     int m = partiziona(a,l,r);
  32.     QuickSort(a,l,m-1);
  33.     QuickSort(a,m+1,r);
  34. }
  35.  
  36. int partiziona(vector<int> &a, int l, int r)
  37. {
  38.  int pivot = a.at(r), J = l, i;
  39.  for(i = l; i < r; i++)
  40.     if(pivot >= a.at(i))
  41.         scambia(a.at(i), a.at(J++));
  42.  scambia(a.at(i), a.at(J));
  43.  return J;
  44. }
  45.  
  46. void scambia(int &a, int &b)
  47. {
  48.     int temp;
  49.     temp = a;
  50.     a = b;
  51.     b = temp;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement