یکی میشه توضیح بده این کد دقیقا چطوری کار میکنه ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

یکی میشه توضیح بده این کد دقیقا چطوری کار میکنه ؟

0 امتیاز
#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;
            }
        }           
    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;
            }
        }
    for(int g=0; g<size; g++)
        cout<<a[g]<<'\t';
    return 0;
}

 

 

سوال شده آذر 7, 1399  بوسیله ی Hameddiamon (امتیاز 9)   1 3

1 پاسخ

0 امتیاز

سلام.دوست عزیز ، این کد یه آرایه 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;
}

 

پاسخ داده شده آذر 7, 1399 بوسیله ی ik (امتیاز 571)   1 2 8
...