Informatică, întrebare adresată de savuamalia19, 8 ani în urmă

Ordonați elementele unui vector folosind metoda bulelor, după ultima cifra.​

Răspunsuri la întrebare

Răspuns de andrei750238
2

#include <iostream>

using namespace std;

int main(){

int v[100],aux;

unsigned n,i;

//Citire date

cin >> n;

for(i=0;i<n;i++) cin >> v[i];

//Sortare

bool sortat=0;

//Cat timp vectorul nu e sortat

while(!sortat){

       //Presupune ca e sortat

       sortat=1;

       //Verifica daca exista doua elemente consecutive nesortate

       for(i=0;i<n-1;i++){

           if(v[i]%10 > v[i+1]%10){

               //Daca exista atunci vectorul nu e sortat

               sortat=0;

               //Interschimba elementele

               aux = v[i];

               v[i]=v[i+1];

               v[i+1]=aux;

           }

       }

}

//Afisare vector sortat

for(i=0;i<n;i++) cout << v[i] << " ";

}

Anexe:
Răspuns de simulink
2

Răspuns:

#include <iostream>

using namespace std;

int main()

{ int n, v[20], i, sortat;

cout<<"n= "; cin>>n;

cout<<"Introduceti elementele vectorului: ";

for(i=1; i<=n; i++) cin>>v[i];

do

{ sortat=1;

for(i=1; i <n; i++)

if (v[i]%10> v[i+1]%10)  {int aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; sortat=0;}

}while (!sortat);

cout<<"Dupa sortare: "<<endl;

for(i=1;i<=n;i++ ) cout<<v[i]<<" ";

return 0;}

Explicație:

Pentru a sorta un vector prin metoda bulelor se procedeaza in felul urmator:

  1) se porneste cu presupunerea ca vectorul este sortat (marcam acest lucru cu ajutorul unei variabile sortat care initial are valoarea 1)

  2) se compara fiecare doua elemente invecinate. Daca nu sunt in ordinea dorita, se interschimba si se marcheaza faptul ca vectorul nu este sortat (var sortat i se atribuie valoarea 0).

Pasii 1 si 2 se executa repetitiv, cat timp vectorul nu este sortat (adica atata timp cat sortat este 0 sau !sortat).

In problema ta, se cere sa se sorteze elementele vectorului dupa ultima cifra, deci la pasul 2 comparam ultima cifra pt doua componente invecinate (ultima cifra a unui numar nat n este n%10) . In cazul in care cele doua cifre sunt in ordinea dorita, interschimbam elementele vectorului.

Alte întrebări interesante