darkjessy94

Bubble e insertion con vector e iteratori - SalvDC

Oct 8th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. ///Pezzi Bubble Sort
  5. void Scambio(int &a, int &b)
  6. {
  7.     int temp=a;
  8.     a=b;
  9.     b=temp;
  10. }
  11. void Confronto(int &a,int &b)
  12. {
  13.     if(b<a)
  14.         Scambio(a,b);
  15. }
  16. void bubble (vector <int>& a)
  17. {
  18.     vector <int>::iterator it1,it2;
  19.     for(it1=a.begin();it1!=a.end();it1++)
  20.         for(it2=it1+1;it2<a.end();it2++)
  21.             Confronto(*it1,*it2);
  22. }
  23.  
  24. ///Insertion Sort
  25. void insertion(vector <int>& a)
  26. {
  27.     ///Dichiaro gli iteratori
  28.     vector <int>::iterator it1;
  29.     int i,j,temp;
  30.     ///Sviluppo normale senza iteratori basta togliere il commento sotto per attivarlo
  31.     /*for(int i=1;i<a.size();i++)
  32.     {
  33.         temp=a.at(i);
  34.         j=i-1;
  35.         while(j>=0&&a.at(j)>temp)
  36.         {
  37.             a.at(j+1)=a.at(j);
  38.             j--;
  39.         }
  40.         a.at(j+1)=temp;
  41.     }*/
  42.     ///Con Iteratori
  43.     ///Per ovviare al 'problema' ho fatto scorrere un indice i per avere le posizioni
  44.     for(it1=a.begin(),i=0;it1!=a.end(),i<a.size();it1++,i++)    ///For a doppio scorrimento
  45.     {
  46.         j=i;                                ///Assegnamo a j il valore di i poichè 'i' non deve variare
  47.         while(j>0&&*(it1-j)>*(it1))         ///Finchè j>0 e gli elementi precedenti a quello selezionato sono minori di esso
  48.         {
  49.             temp=*(it1);                    ///Effettua lo scambio
  50.             (*(it1))=(*(it1-j));            ///Effettua lo scambio
  51.             *(it1-j)=temp;                  ///Effettua lo scambio
  52.             j--;                            ///Decremento j per posizionarmi sull'elemento precedente
  53.         }
  54.     }
  55.     cout<<endl;
  56. }
  57. int main()
  58. {
  59.     vector <int> a;
  60.     int b;
  61.     for(int i=0;i<10;i++)                   ///Carico 10 elementi
  62.         {
  63.             cin>>b;
  64.             a.push_back(b);                 ///Carichiamo dal fondo
  65.         }
  66.     ///Chiamata al Bubble Sort basta togliere il commento sotto per attivarlo
  67.     //bubble(a);
  68.     ///Chiamata all'Insertion Sort
  69.     insertion(a);
  70.     for(auto x:a)                           ///Rage-For per la visualizzazione del Vector
  71.         cout<<" "<<x;
  72.     return 0;
  73. }
Add Comment
Please, Sign In to add comment