Условие
Имате предварително въведен едномерен масив с елементи от интервала [-100..100]
Да се състави програма на C++, която сортира вектора по метода на мехурчето.
Пример:
5,6,8,1,2,3,4,7,9,11
Изход:
1,2,3,4,5,6,7,8,9,11
Решение
#include<iostream>
using namespace std;
int main()
{const int n=10;
int a1,mas[n]={15,6,8,1,2,3,4,7,9,11};
int a,b,razm;
cout<<"Da se systawi programa, koqto sortira po metoda na mehurcheto\n";
cout<<"predwaritelno wyweden ednomeren masiw s elementi w granicite\n";
cout<<"[-100 +100]\n";
cout<<"Primer: 5,6,8,1,2,3,4,7,9,11 Izhod 1,2,3,4,5,6,7,8,9,11\n";
cout<<"Nachalno systoqnie na masiwa: \n";
for (a=0;a<n;a++) {cout<<mas[a]<<"; ";}//pechat na nesortiraniq masiw
cout<<endl;
razm=0;//sledqt se broj izwyrsheni rezmeni
cout<<"Zapochwa sortirane..\n";
b=1;//flag dali e izwyrshwana razmqna na stojnosti - podrevdane
while (b>0)
{ //dokato ne preminat wsichki prowerki bez razmqna na stojnost
b=0;//w nachaloto na obikolkata se priema, che ne e izwyrshwana razmqna
for (a=1;a<n;a++)
{//prowerqwat se wsichki elementi ot wtoriq do posledniq element
if (mas[a]<mas[a-1]) //srawnqwat se tekushiq element s predhodniq
{ b=1;//izwyrshwa se razmqna na stojnosti
a1=mas[a-1];//razmqna na stojnosti chrez treta promenliwa
mas[a-1]=mas[a];
mas[a]=a1;
razm++;
}//kraj if
}//kraj for
for (a=0;a<n;a++) {cout<<mas[a]<<"; ";}//pechat na nesortiraniq masiw
cout<<" - etap na sortirane\n";
}//kraj while
cout<<"Systoqnie na masiwa sled sortirane: \n";
for (a=0;a<n;a++) {cout<<mas[a]<<"; ";}//pechat na sortiraniq masiw
cout<<endl;
cout<<"Broj izwyrsheni razmeni: "<<razm<<endl;
system("pause");
return 0;
} //kraj na programa sortirane