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[dr]>aux=>(intrăm în if)=>dr=m+1=1+1=2.
(1<2=>st≤dr). Continuăm while-ul (s-a respectat condiția).
m=(st+dr)/2=(1+2)/2=3/2=1. 0=0=>a[dr]≤aux=>(intrăm în
else)=>dr=m+1=1+1=2. (1<2=>st≤dr).
Ciclu infinit
#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[dr]>aux)
dr=m+1;
else
dr=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