47 23 12 17 30

Intrăm în for. i=1. (1<5=>i<n). Continuăm for-ul (s-a respectat condiția). x=X[i]=X[1]=23. p=i-1=1-1=0. (0=0=>p≥0 și 47>23=>X[p]>x). Intrăm în while (s-au respectat condițiile). X[p+1]=X[0+1]=X[1]=X[p]=X[0]=47. Postdecrementăm p. (-1<0=>p<0 și răspuns nedeterminat). Ieșim din while (răspuns negativ). X[p+1]=X[-1+1]=X[0]=x=23.

23 47 12 17 30

Postincrementăm i. (2<5=>i<n). Continuăm for-ul (s-a respectat condiția). x=X[i]=X[2]=12. p=i-1=2-1=1. (1>0=>p≥0 și 47>12=>X[p]>x). Intrăm în while (s-au respectat condițiile). X[p+1]=X[1+1]=X[2]=X[p]=X[1]=47. Postdecrementăm p. (0=0=>p≥0 și 23>12=>X[p]>x). Continuăm while-ul (s-au respectat condițiile). X[p+1]=X[0+1]=X[1]=X[p]=X[0]=23. Postdecrementăm p. (-1<0=>p<0 și răspuns nedeterminat). Ieșim din while (răspuns negativ). X[p+1]=X[-1+1]=X[0]=x=12.

12 23 47 17 30

Postincrementăm i. (3<5=>i<n). Continuăm for-ul (s-a respectat condiția). x=X[i]=X[3]=17. p=i-1=3-1=2. (2>0=>p≥0 și 47>17=>X[p]>x). Intrăm în while (s-au respectat condițiile). X[p+1]=X[2+1]=X[3]=X[p]=X[2]=47. Postdecrementăm p. (1>0=>p≥0 și 23>17=>X[p]>x). Continuăm while-ul (s-au respectat condițiile). X[p+1]=X[1+1]=X[2]=X[p]=X[1]=23. Postdecrementăm p. (0=0=>p≥0 și 12<17=>X[p]<x). Ieșim din while (nu s-a respectat a doua condiție). X[p+1]=X[0+1]=X[1]=x=17.

12 17 23 47 30

Postincrementăm i. (4<5=>i<n). Continuăm for-ul (s-a respectat condiția). x=X[i]=X[4]=30. p=i-1=4-1=3. (3>0=>p≥0 și 47>30=>X[p]>x). Intrăm în while (s-au respectat condițiile). X[p+1]=X[3+1]=X[4]=X[p]=X[3]=47. Postdecrementăm p. (2>0=>p≥0 și 23<30=>X[p]<x). Ieșim din while (nu s-a respectat a doua condiție). X[p+1]=X[2+1]=X[3]=x=30.

12 17 23 30 47

Postincrementăm i. (5=5=>i≥n). Ieșim din for (nu s-a respectat condiția).

 

#include <iostream>

using namespace std;

int main()

{

    int n,X[100];

    cin>>n;

    for (int i=0;i<n;++i)

        cin>>X[i];

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

    {

        int x=X[i],p=i-1;

        while (p>=0&&X[p]>x)

        {

           X[p+1]=X[p];

           p--;

        }

        X[p+1]=x;

    }

    for (int i=0;i<n;++i)

        cout<<X[i]<<' ';

}

 

Comentarii