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

Отсортировать массив по убыванию через алгоритм пирамидальной сортировки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать выходной массив строк, содержащий текст, состоящий из записей строго одинаковой длины http://www.cyberforum.ru/cpp-beginners/thread1193144.html
В литерном массиве строк есть текст, содержащий слова, разделенные пробелами. Предложения текста разделены точками. Длина записей в этом массиве строке произвольная. Создать выходной массив строк, содержащий текст, состоящий из записей строго одинаковой длины - 60 байт. Исключение могут составлять записи, заканчивающиеся точкой - после точки нужно вывести в выходной массив строк признак...
C++ Парсинг html - Вывод всех ссылок с их текстовыми полями Доброго времени суток, уважаемые форумчане! Недавно встал вопрос о написании парсера для html. Задача парсинга: вывод всех ссылок с их текстовыми полями. Как можно реализовать без спец. либов для парсинга? http://www.cyberforum.ru/cpp-beginners/thread1193142.html
C++ Теорема персона - Моделирование случайных чисел с заданным законом распределения
Моделирование случайных чисел с заданным законом распределения как запрограммировать вот эту формулу?
C++ Подскажите,как создать из данного стека двунаправленный линейный стек
Пожалуйста,подскажите как исправить программу В программе я создаю стек из записей (структур) с данными о каком-то студенте. Считывается информация из файла. Как мне сделать не просто стек, а двунаправленный линейный стек? Программа написана на Си и нужно на Си, а не на С++. Структура называется Student. #include <stdio.h> #include <string.h>
C++ Вычисление площади круга http://www.cyberforum.ru/cpp-beginners/thread1193124.html
Пусть элементами круга будут радиус (первый элемент), диаметр (второй элемент), длина окружности (третий элемент). Составить программу, которая по номеру элемента запрашивает его значение и вычисляет площадь круга.
C++ Три отрезка заданы координатами своих концов. Определить, можно ли построить из них треугольник Задача 1. Три отрезка заданы координатами своих концов. Определить, можно ли построить из них треугольник, если - да, то вычислить его площадь. подробнее

Показать сообщение отдельно
RavilSHai
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 82
31.05.2014, 16:07  [ТС]     Отсортировать массив по убыванию через алгоритм пирамидальной сортировки
Вроде у меня получилось, на всякий случай скину, может кому-нибудь пригодится
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
#include <stdio.h>
#include <stdlib.h>
 
 
void siftDown(float *numbers, int root, int bottom)
{
  int done, maxChild, temp;
  done = 0;
  while ((root*2 <= bottom) && (!done))
  {
    if (root*2 == bottom)
      maxChild = root * 2;
    else if (numbers[root * 2] > numbers[root * 2 + 1])
      maxChild = root * 2;
    else
      maxChild = root * 2 + 1;
    if (numbers[root] < numbers[maxChild])
    {
      temp = numbers[root];
      numbers[root] = numbers[maxChild];
      numbers[maxChild] = temp;
      root = maxChild;
    }
    else
      done = 1;
  }
}
void heapSort(float *numbers, float array_size)
{
  int i, temp;
  for (i = (array_size / 2)-1; i >= 0; i--)
    siftDown(numbers, i, array_size);
  for (i = array_size-1; i >= 1; i--)
  {
    temp = numbers[0];
    numbers[0] = numbers[i];
    numbers[i] = temp;
    siftDown(numbers, 0, i-1);
  }
}
void main()
{
    float a[10];
    for(int i=0;i<10;i++)
        a[i]=(rand()%901+100)/double(100);
    for(int i=0;i<10;i++)
        printf("%.3f ",a[i]);
    printf("\n");
    heapSort(a,10);
    for(int i=0;i<10;i++)
        printf("%.3f ",a[i]);
    printf("\n");
    getchar();
}
 
Текущее время: 10:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru