Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 54
1

Как вывести кучу в HeapSort?

16.11.2020, 15:00. Показов 362. Ответов 2
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Я делаю сортировку кучей, и всё вроде как работает, но мне нужно вывести перед сортировкой просто массив кучи. Подскажите, пожалуйста, как это реализовать?

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
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
void heapify(int mass[], int n, int i)
{
    int largest = i;
    int l = 2 * i + 1;
    int r = 2 * i + 2;
    if (l < n && mass[l] > mass[largest])
        largest = l;
    if (r < n && mass[r] > mass[largest])
        largest = r;
    if (largest != i)
    {
        swap(mass[i], mass[largest]);
        heapify(mass, n, largest);
    }
}
 
void heapSort(int mass[], int n)
{
    for (int i = n / 2 - 1; i >= 0; i--)
        heapify(mass, n, i);
    for (int i = n - 1; i >= 0; i--)
    {
        swap(mass[0], mass[i]);
        heapify(mass, i, 0);
    }
}
 
int main()
{
    int* mass;
    int i, n, a;
    cout << ' ' << "Enter the demension of the array" << "\n" << ' ';
    scanf_s("%d", &n);
    mass = (int*)malloc(n * sizeof(int));
    cout << ' ' << "Input array:" << "\n";
    if (mass)
    {
        for (int i = 0; i < n; i++)
        {
            printf(" a[%d] = ", i);
            scanf_s("%d", &mass[i]);
        }
        cout << ' ' << "Start array:" << "\n";
        for (i = 0; i < n; i++)
            printf(" %d ", mass[i]);
        cout << "\n";
        
        heapSort(mass, n);
        cout << ' ' << "Sorted array:" << "\n";
        for (i = 0; i < n; i++)
            printf(" %d ", mass[i]);
        cout << "\n";
        free(mass);
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2020, 15:00
Ответы с готовыми решениями:

Подскажите, как вывести знак фунта в консоли - перепробовал кучу способов, ничего не получается
Не получается вывести знак фунта, вместо него выводит знак вопроса, пробовал разными способами,...

про кучу и не кучу
уважаемые подскажите плиз, есть ли точный способ отличить по указателю, расположен объект в куче...

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

Как правильно освобождать кучу?
допустим, создаю массив байт: BYTE* data = (BYTE*)HeapAlloc(GetProcessHeap(), NULL, 16); ...

2
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
16.11.2020, 15:10 2
Цитата Сообщение от mantowolf Посмотреть сообщение
Я делаю сортировку кучей
ты пишешь сортировку, и не можешь массив вывести?
0
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 54
16.11.2020, 15:49  [ТС] 3
Цитата Сообщение от _stanislav Посмотреть сообщение
ты пишешь сортировку, и не можешь массив вывести?
Ага

Добавлено через 24 минуты
Цитата Сообщение от _stanislav Посмотреть сообщение
ты пишешь сортировку, и не можешь массив вывести?
Я сделал теперь
0
16.11.2020, 15:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2020, 15:49
Помогаю со студенческими работами здесь

Как собрать файлы в кучу?
В книге Страуструпа для начинающих, в 8 главе квест, на создание заголовочного файла, и два сpp...

Как представить кучу в виде объекта?
как представить кучу в виде объекта?

Как реализовать бинарную кучу (пирамиду)?
Доброго времени суток всем. Продолжаю изучать структуры данных, пришла очередь деревьев бинарного...

Как сделать кучу ссылок компактнее?
Пока что не сильно много, но уже напрягает мозг. Можно ли как то подобное сделать более компактно,...

Как загнать кучу FreeRTOS в SDRAM?
Привет всем. Есть STM32F439+32MB SDROM. Крутятся 2 задачи FriiRTOS - фоновая (мышки, мониторинг...

Как проанализировать большую кучу данных
Добрый день, в экселе есть куча данных (340 столбцов), каждая столбец это один час, и в ячейке...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru