10 0 -1 -3 1 -4 9 3 -1 -4 3 -4
Am apelat în main()
BinaryInsertionSort(a,12). Intrăm în for. i=2. (2<12=>i≤n). Continuăm
for-ul (s-a respectat condiția). aux=a[i]=a[2]=0. st=1. dr=i-1=2-1=1. (1=1=>st≤dr).
Intrăm în while (s-a respectat condiția). m=(st+dr)/2=(1+1)/2=2/2=1.
10>0=>a[st]>aux=>(intrăm în if)=>st=m-1=1-1=0.
(0<2=>st≤dr). Continuăm while-ul (s-a respectat condiția).
m=(st+dr)/2=(0+2)/2=2/2=1.
Răspuns nedeterminat
#include <iostream>
using namespace std;
int n,a[50];
void BinaryInsertionSort(int a[],int n)
{
int st,dr,m,i,j,aux;
for (i=2;i<=n;i++)
{
aux=a[i];
st=1;
dr=i-1;
while (st<=dr)
{
m=(st+dr)/2;
if (a[st]>aux)
st=m-1;
else
st=m-1;
}
for (j=st;j<=i-1;j++)
a[j+1]=a[j];
a[st]=aux;
}
}
int main()
{
int i;
cin>>n;
for (i=1;i<=n;++i)
cin>>a[i];
BinaryInsertionSort(a,n);
for (i=1;i<=n;++i)
cout<<a[i]<<' ';
}
Comentarii
Trimiteți un comentariu