سلام.دوست عزیز ، این کد یه آرایه 5 عنصری رو با روش مرتب سازی حبابی مرتب می کنه.یک بار نزولی و بعد هم به طور صعودی.
مثلا اگه عناصر آرایه 15و10و5و20و25 باشن :
توی دور اول حلقه i : حلقه j ، چهار بار میچرخه و هر بار هر عنصر آرایه رو با عنصر بعدیش مقایسه میکنه و عنصر کوچکتر رو به سمت راست شیفت میده(جای دو عدد رو با هم عوض میکنه).در نتیجه ، 5 میره به آخر آرایه
توی دور دوم حلقه i : حلقه j ، سه بار میچرخه و همون عملیات رو انجام میده و در نتیجه 10 میره به خونه یکی مونده به آخر آرایه
... و به همین شکل ادامه میده و هر بار کوچکترین عنصر رو شیفت میده به راست تا در نهایت آرایه به شکل نزولی مرتب بشه.
توی قسمت دوم کد هم همین کار رو انجام میده ،با این تفاوت که هر بار عدد بزرگتر رو به راست شیفت میده تا آرایه به شکل صعودی مرتب بشه
برای اینکه بهتر متوجه بشید می تونید عناصر آرایه رو توی حلقه ها مدام چاپ کنید و تغییرات رو بیینید.به این شکل :
#include <iostream>
using namespace std;
int main()
{
int x,b,c,d,e;
cin>>x;
cin>>b;
cin>>c;
cin>>d;
cin>>e;
int a[5]={x,b,c,d,e};
int size=5,t;
cout<<"large to small:\n";
for (int i=0; i<size-1; i++)
{
for (int j=0; j<size-i-1; j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
cout<<"i = "<<i<<'\n';
for (int g=0;g<size; g++)
{
cout<<a[g]<<',';
}
cout<<'\n';
}
cout<<"final array :\n";
for (int g=0;g<size; g++)
cout<<a[g]<<'\t';
cout<<'\n';
cout<<"respectively:"<<'\n';
for (int i=0; i<size-1; i++)
{
for (int j=0; j<size-i-1; j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
cout<<"i = "<<i<<'\n';
for (int g=0;g<size; g++)
{
cout<<a[g]<<',';
}
cout<<'\n';
}
cout<<"final array :\n";
for(int g=0; g<size; g++)
cout<<a[g]<<'\t';
return 0;
}