Архив задач

2013 [11] Ошибка

В ходе разработки сложного программного проекта произошел сбой в системе контроля версий. В результате в коде функции  heapSort произошли изменения. Известно, что в качестве параметров подается массив целых чисел и размер массива этого массива. В результате выполнения  функции должен быть получен отсортированный массив.

Найдите ошибку, которая была внесена в исходный код в результате сбоя.

 

C

Pascal

void downHeap(int a[],long k,long n)

{

intnew_elem;

  long child;

new_elem = a[k];

  while(k <= n/2)

  {      

    child = 2*k;

    if(child<n&&a[child]<a[child+1])

    child++;

    if( new_elem>= a[child] )

    break;

    a[k] = a[child];     

    k = child;

  }

  a[k] = new_elem;

}

void heapSort(int a[], long size)

{

  long i;

int temp;

  for(i=size/2-1; i >= 0; i--)

downHeap(a, i, size-1);

  for(i=size-1; i > 0; i--)

  {

    temp=a[i];

    a[i]=a[0];

    a[0]=temp;

downHeap(a, 0, i);

}

}

 

procedure heapSort

    (var a:array[0..n] of integer;

var n: integer;)

var

  i: integer;

  temp: integer;

 

procedure downHeap

     (var a:array[0..n] of integer;

var n: integer;

var k: integer);

var

new_element: integer;

  child: integer;

  label 1;

begin

new_element:=a[k];

  while k <= n/2 do

  begin

   child:=2*k;

   if((child<n)&&(a[child]<a[child+1]))

   then goto 1;

   a[k]:=a[child];

   k:=child;

  end;

  1:a[k]=new_element;

end;

 

begin

  for i:=n/2-1 downto 0 do

downHeap(a,n,i);

  for i:=n-1 downto 0 do

  begin

    temp:=a[i];

    a[i]:=a[0];

    a[0]:=temp;

downHeap(a,0,i)

  end;

end;