Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297

Сортировка массива по возрастанию или убыванию

12.05.2013, 00:24. Показов 4110. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан одномерный массив состоящий из N целых элементов. Осуществить хип сорт по возрастанию или убыванию.
P.s. как можно больше комментариев)))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2013, 00:24
Ответы с готовыми решениями:

Сортировка массива по возрастанию или убыванию
Задача. Дан массив чисел размерностью 10 элементов. Написать функцию, которая сортирует массив по возрастанию или по убыванию, в...

Сортировка методом пузырька по возрастанию или убыванию
Здравствуйте, Задали задачку, не могу додуматься уже неделю. Вообщем, программа сортирует массив методом пузырька. Суть в том, чтобы...

Сортировка структуры по убыванию или возрастанию в зависимости от введенного символа
Написал программу вроде работает, беда только в том , что когда нажимаеш 1 в запущенной прогррамме , то сортировка происходит по...

2
 Аватар для IGLON
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 29
15.05.2013, 17:17
Ребята, очень будем благодарны с ZeR_0 за ответы!
0
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
15.05.2013, 19:36
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void Print(int*, int);
 
//----------------------------------------------//
void DownHeap(int heap[], int i, int n)
{
   //Просеивает элемент номер i вниз в пирамиде heap.
   //n -- размер пирамиды
 
   //Идея в том, что вычисляется максимальный элемент из трёх:
   //  1) текущий элемент
   //  2) левый потомок
   //  3) правый потомок
   //Если индекс текущего элемента не равен индексу максималь-
   //  ного, то меняю их местами, и перехожу к максимальному
 
   //Индекс максимального элемента в текущей тройке элементов:
   int max = i;
   //Значение текущего элемента (не меняется):
   int const value = heap[i];
 
   while (1)
   {
      //Рассматривается элемент i и его потомки i*2+1 и i*2+2
      //В начале каждой итерации max == i и value == heap[i]
 
      int child = (i * 2) + 1; //Индекс левого потомка
      //Если есть левый потомок и он больше текущего элемента,
      if ((child < n) && (heap[child] > value))
      {
         max = child; //  то он считается максимальным
      }
 
      ++child; //Индекс правого потомка
      //Если есть правый потомок и он больше максимального,
      if ((child < n) && (heap[child] > heap[max]))
      {
         max = child; //  то он считается максимальным
      }
      //Если текущий элемент является максимальным из трёх
      //  (т.е. если он больше своих детей), то конец:
      if (max == i)
      {
         break;
      }
 
      //Меняю местами текущий элемент с максимальным:
      heap[i] = heap[max];
      heap[max] = value;
      //  при этом значение value будет в ячейке max,
      //  поэтому в начале следующей итерации значение value
      //  правильно, т.к. мы переходим именно к этой ячейке
 
      //Переходим к изменившемуся потомку
      i = max;
   }
}
//----------------------------------------------//
void HeapSort(int heap[], int n)
{
   //Пирамидальная сортировка массива heap.
   //  n -- размер массива
   int i;
   //Этап 1: построение пирамиды из массива
   for (i = n / 2 - 1; i >= 0; --i)
   {
      DownHeap(heap, i, n);
   }
 
   //Этап 2: сортировка с помощью пирамиды.
   //  Здесь под «n» понимается размер пирамиды
   while (n > 1)  //Пока в пирамиде больше одного элемента
   {
      --n; //Отделяю последний элемент
 
      //Меняю местами корневой элемент и отделённый:
      int tmp = heap[0];
      heap[0] = heap[n];
      heap[n] = tmp;
 
      //Просеиваю новый корневой элемент:
      DownHeap(heap, 0, n);
   }
}
//----------------------------------------------//
void Random(int* a, int n)
{
   int i;
   for (i = 0; i < n; i++)
   {
      a[i] = rand() % (n * 2);
   }
}
//----------------------------------------------//
void Print(int* a, int n)
{
   int i;
   for (i = 0; i < n; i++)
   {
      printf("%3d ", a[i]);
   }
   printf("\n");
}
//----------------------------------------------//
int main(int argc, char** argv)
{
   srand(time(NULL));
 
   int* a = NULL;
   int n;
 
   printf("n: ");
   scanf("%d", &n);
   a = malloc(sizeof(int) * n);
 
   Random(a, n);
 
   Print(a, n);
 
   HeapSort(a, n);
 
   Print(a, n);
 
   return 0;
}
Реализована на базе лекции: Лекция № 5: Пирамидальная сортировка
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2013, 19:36
Помогаю со студенческими работами здесь

Сортировка четных элементов массива по возрастанию, а нечетных-по убыванию
Задача в общем такая: Дан целочисленный массив.Отсортировать его четные элементы по возрастанию, а не чётные по убыванию Добавлено...

Сортировка массива: левая часть по возрастанию, правая по убыванию
Помогите, пожалуйста. Провести сортировку массива из четного количества элементов: левая часть по возрастанию, правая по убыванию....

Сортировка по возрастанию, по убыванию и поиск заданного значения
элементы списка предназначены для хранения данных следующих типов: длинное целое число, вещественное число двойной точности, строка...

Дана матрица M*N. Сортировка положительных элементов по убыванию, остальных - по возрастанию. Нули в конце
Добрый вечер! Дан массив M*N. Необходимо отсортировать ее по строкам так, чтобы вначале шли все положительные элементы,...

Написать функцию, которая упорядочивает массив целых чисел или по возрастанию или по убыванию. Использовать эту функцию
Написать функцию, которая упорядочивает массив целых чисел или по возрастанию или по убыванию. Использовать эту функцию в программе,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru