Monday, 30 April 2012

Snippets of Heap Sort in C++


int i, j, j2, k;
int temp;

for(k = (n>>1) - 1; k >= 0; k--)
{
    temp = item[k];
    for(j = k; (j<<1) <= n-2; j = i)
    {
        j2 = j <<1;
        if (j2+2 > n-1)
            i = j2+1;
        else
        {
            if (item[j2+1] < item[j2+2])

                 i = j2+2;
            else
                 i = j2+1;
        }
        if (temp < item[i])
             item[j] = item[i];
        else
             break;
    }
    item[j] = temp;
}

...


for(k=n-1; k>0; k--)
{ 
    temp = item[k];
    item[k] = item[0];
    for(j = 0; (j<<1) <= k-2; j = i)
    {
       j2 = j<<1;
       if ( j2+2 > k-1 )    
           i = j2+1;
       else
       {
           if ( item[j2+1] < item[j2+2] )
             i = j2+2;
           else
             i = j2+1;
       }
       if (temp < item[i])
          item[j] = item[i];    
       else
          break;
    }
    item[j]  = temp;
}

...


No comments:

Post a Comment