Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Diskret / Piramid / main

.cpp
Скачиваний:
7
Добавлен:
18.08.2019
Размер:
1.35 Кб
Скачать
#include <iostream>

using namespace std;

void downHeap(int A[], int k, int n) {
  //  процедура просеивания следующего элемента
  //  До процедуры: A[k+1]...a[n]  - пирамида
  //  После:  A[k]...a[n]  - пирамида
  int new_elem;
  int 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;
}

void heapSort(int a[], int size)
{ int i,j, temp;
// строим пирамиду
for(i=size/2-1; i >= 0; i--) downHeap(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;
// восстанавливаем пирамидальность a[0]...a[i-1]
 downHeap(a, 0, i-1);   }
// вызвать downheap O(n) раз для преобразования массива в пирамиду целиком
for(j=size/2; j >= 0; j--)
downHeap(a, j, size-1);
}



int main()
{
    int i;
    const int N = 8;

    int Arr[N] = {94, 67, 18, 44, 55, 12, 6, 42};

    for(i=0; i<N; i++)
        cout << Arr[i] << " ";

    heapSort(Arr,N);

    cout << endl;
    for(i=0; i<N; i++)
        cout << Arr[i] << " ";

    return 0;
}
Соседние файлы в папке Piramid
  • #
    18.08.20191.35 Кб7main.cpp
  • #
    18.08.20191.11 Кб7Piramid.cbp
  • #
    18.08.2019101 б8Piramid.depend
  • #
    18.08.2019319 б7Piramid.layout