Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Пирамидальная сортировка


Автор: MoxHaToe 30.5.2009, 08:46
Код

template <class T>  void pir (T a[], long k, long n) 
{  T new_elem;
  long child;
  new_elem = a[k];
  while(k <= n/2)  // пока у a[k] есть дети
{         
    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;
}
template void sort(T a[], long size) 
{  long i;  T temp;  
  for(i=size/2-1; i >= 0; i--) // строим пирамиду
pir(a, i, size-1);
    // теперь a[0]...a[size-1] пирамида 
  for(i=size-1; i > 0; i--) {
    // меняем первый с последним 
    temp=a[i]; a[i]=a[0]; a[0]=temp;
    pir(a, 0, i-1);    // восстанавливаем пирамидальность a[0]...a[i-1] 
  }
}

Может кто то сдавал и осталась блок схема данного алгоритма.

Автор: bsa 30.5.2009, 21:55
а в чем собственно проблема? если знаешь какие блоки за что отвечают, то дело 10 минут нарисовать блок-схему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)