Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pyramid_merge.h"
- void Sift(int* H, int i, int n)
- {
- // Просеивание в пирамиду
- int j = 2*i, x = H[i];
- if ((j < n) && (H[j + 1] < H[j]))
- j++;
- while ((j <= n) && (H[j] < x))
- {
- H[i] = H[j];
- i = j;
- j = 2*i;
- if ((j < n) && (H[j + 1] < H[j]))
- j++;
- }
- H[i] = x;
- }
- int Heap_Sort(int* H)
- {
- int x, l = N/2 + 1, r = N;
- //Формирование пирамиды
- while (l > 1) {
- l--;
- Sift(H, l, N);
- }
- //Сортировка
- while (r > 1) {
- x = H[l];
- H[l] = H[r];
- H[r] = x;
- r--;
- Sift(H, l, N);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment