Код | 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] } }
|
Может кто то сдавал и осталась блок схема данного алгоритма. |