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