Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- ///Pezzi Bubble Sort
- void Scambio(int &a, int &b)
- {
- int temp=a;
- a=b;
- b=temp;
- }
- void Confronto(int &a,int &b)
- {
- if(b<a)
- Scambio(a,b);
- }
- void bubble (vector <int>& a)
- {
- vector <int>::iterator it1,it2;
- for(it1=a.begin();it1!=a.end();it1++)
- for(it2=it1+1;it2<a.end();it2++)
- Confronto(*it1,*it2);
- }
- ///Insertion Sort
- void insertion(vector <int>& a)
- {
- ///Dichiaro gli iteratori
- vector <int>::iterator it1;
- int i,j,temp;
- ///Sviluppo normale senza iteratori basta togliere il commento sotto per attivarlo
- /*for(int i=1;i<a.size();i++)
- {
- temp=a.at(i);
- j=i-1;
- while(j>=0&&a.at(j)>temp)
- {
- a.at(j+1)=a.at(j);
- j--;
- }
- a.at(j+1)=temp;
- }*/
- ///Con Iteratori
- ///Per ovviare al 'problema' ho fatto scorrere un indice i per avere le posizioni
- for(it1=a.begin(),i=0;it1!=a.end(),i<a.size();it1++,i++) ///For a doppio scorrimento
- {
- j=i; ///Assegnamo a j il valore di i poichè 'i' non deve variare
- while(j>0&&*(it1-j)>*(it1)) ///Finchè j>0 e gli elementi precedenti a quello selezionato sono minori di esso
- {
- temp=*(it1); ///Effettua lo scambio
- (*(it1))=(*(it1-j)); ///Effettua lo scambio
- *(it1-j)=temp; ///Effettua lo scambio
- j--; ///Decremento j per posizionarmi sull'elemento precedente
- }
- }
- cout<<endl;
- }
- int main()
- {
- vector <int> a;
- int b;
- for(int i=0;i<10;i++) ///Carico 10 elementi
- {
- cin>>b;
- a.push_back(b); ///Carichiamo dal fondo
- }
- ///Chiamata al Bubble Sort basta togliere il commento sotto per attivarlo
- //bubble(a);
- ///Chiamata all'Insertion Sort
- insertion(a);
- for(auto x:a) ///Rage-For per la visualizzazione del Vector
- cout<<" "<<x;
- return 0;
- }
Add Comment
Please, Sign In to add comment