Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
smuglik26
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 4
#1

Пирамидальная сортировка - C++

17.03.2014, 19:47. Просмотров 953. Ответов 1
Метки нет (Все метки)

Добрый Вечер!
Нужно сделать Пирамидальную сортировку. Немного получилось, но программа работает так как хотелось бы. Не сортирует последний шаг.
Не могу найти в чем ошибка. Прикрепил код, помогите кому не сложно.
Заранее спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
using namespace std;
void Heapify(int A[], int i, int heapsize);
void HeapSort(int A[], int heapsize);
void BuildHeap(int A[], int heapsize);
int main()
{
    const int heapsize = 6;
    int A[] = { 1, 6, 45, 7, 2, 3 };
    for (int i = 0; i <= heapsize - 1; i++)
    {
        cout << A[i] << endl;
    }
    HeapSort(A, heapsize);
    cin.get();
    return 0;
}
int Parent(int i)
{
    return ((i-1) / 2);
}
int Left(int i)
{
    return (2 * i + 1);
}
int Right(int  i)
{
    return (2 * i + 2);
}
void Heapify(int A[], int i, int heapsize)
{
    int l = Left(i),
        r = Right(i),
        largest, temp;
    if (l <= heapsize && A[l] > A[i])
    {
        largest = l;
    }
    else
    {
        largest = i;
    }
    if (r <= heapsize && A[r] > A[i])
    {
        largest = r;
    }
    
    if (largest != i)
    {
        temp = A[i];
        A[i] = A[largest];
        A[largest] = temp;
        Heapify(A, largest, heapsize);
    }
}
void BuildHeap(int A[], int heapsize)
{
    for (int i = (heapsize-1)/2; i >= 0; i--)
    {
    Heapify(A, i, heapsize);
    }
}
void HeapSort(int A[], int heapsize)
{
    int temp;
    BuildHeap(A, heapsize);
    cout << "mass:  ";
    for (int j = heapsize - 1; j >= 0; j--)
    {
        cout << A[j] << " ";
    }
    for (int i = heapsize; i > 0; i--)
    {
        temp = A[i];
        A[i] = A[heapsize - 1];
        A[heapsize - 1] = temp;
        heapsize = heapsize - 1;
        Heapify(A, i, heapsize);
 
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 19:47     Пирамидальная сортировка
Посмотрите здесь:

Пирамидальная сортировка - C++
Каким будет порядок элементов списка после применения к нему этапа построения пирамиды? Поделитесь опытом, желанно парочку комментарий...

пирамидальная сортировка - C++
Пирамидальная сортировка есть???

Пирамидальная сортировка - C++
Здраствуйте! Я хотел бы вас попросить о помощи! Помогите пожалуйста сделать это задание методом пирамидальной сортировки. ...

Пирамидальная сортировка - C++
int HeapSort (int *a, int n) { int left = n/2+1, right=n-1, x; while (left&gt;1) sift (a, --left, right); while (right&gt;1) {...

Пирамидальная сортировка - C++
Здравствуйте! Хотела попросить помощи. Мне нужно отсортировать дерево пирамидальной сортировкой. Создание дерева у меня есть, но сортировка...

Пирамидальная сортировка - C++
дайте пожалуйста код на сортировку массива пирамидальной сортировкой.

Пирамидальная сортировка - C++
Есть программа для пирамидальной сортировки но сортирует в другую сторону от меньшего к большему, а нужно наоборот, как исправить ...

Пирамидальная сортировка - C++
Всем hello!!! Плиз помогите реализовать пирамидальную сортировку на С++!!! Зарание блогодарен!!!

Пирамидальная сортировка - C++
Может кто может выложить примеры: 1) пирамидальной сортировки 2) сортировка простым выбором Они нужны в курсовую как примеры ...

Пирамидальная сортировка - C++
Соритровка работает, но при больших значениях очень долго, помогите найти проблему Вообщем элементы массива А поступают на вход программы...

Пирамидальная сортировка - C++
Здравствуйте, написал пирамидальную сортировку с костылями, которая вроде и работает, но если сдавать, то 10 тестов из 30 проходит, вот...

Пирамидальная сортировка по убыванию - C++
Всем привет. Требуется реализовать пирамидальную сортировку по убыванию. Как делается сортировка по возрастанию мне известно. Как это можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_include
Студент
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
17.03.2014, 21:58     Пирамидальная сортировка #2
Почему бы не использовать при передаче массивов в функции указатели, не задать размерность массива сразу, ведь heapsize это размер массива? Проверьте циклы, может заместо i > 0 стоит использовать i >= 0? как вариант последний шаг может не выполняться. Нумерация в массивах в С/С++ начинается с 0 ведь :3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru