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
Trimiteți un comentariu