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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблемы с использованием класса http://www.cyberforum.ru/cpp-beginners/thread344374.html
Задача Водителям не безразличен пробег их авто. Один водитель записал свои данные о нескольких заправках, записывая пройденные км и число залитых в бак литров бензина Разработайте программу,...
C++ Мышь Здравствуйте, подскажите, где ошибка? #include "stdafx.h" #include <Windows.h> #include <winuser.h> //Оба хэдэра нужны? using namespace System; static void click(int x, int y) { http://www.cyberforum.ru/cpp-beginners/thread344330.html
Помогите новичку. C++
Я совсем чайник, можно сказать, что я ни разу в жизни не сталкивался с программированием на каком-либо языке. Но у меня есть огромное желание изучить язык С++. Я не знаю абсолютно ничего. Помогите,...
C++ WinApi и MinGW
Здравствуйте! Суть такова: При компиляции следующего кода : #include <QtCore/QCoreApplication> #include <windows.h> #include <iostream> using namespace std; int main(int argc, char *argv)...
C++ Удаление цикла в ориентированном графе http://www.cyberforum.ru/cpp-beginners/thread344278.html
Помогите реализовать такой вот алгоритм: Задан ориентированный граф. Необходимо найти и удалить из него все циклы. Пример графа: 1 2 2 3 2 4 3 1 3 5 4 5 Находим циклы: {1 2 3 1} => Заменяем...
C++ Пример задания с сайта Яндекса =) Доброе время суток всем страждущим :jokingly: Просматривая объявления вакансий для программистов не мог не заметить некую шаблонность что-ли, этих самых объявлений. В них говориться что нужен... подробнее

Показать сообщение отдельно
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
22.08.2011, 23:39
_д_м_и_т_р_и_й_,

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
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <functional>
 
template <class Iterator>
void DownHeap(Iterator first, int current, int size) {
   std::size_t index_child;
   auto element = *(first + current);
 
   while(current <= size / 2) {
      index_child = 2 * current;
 
      if ((index_child < size) && (*(first + index_child) < *(first + index_child + 1))) {
         index_child++;
      }
      
      if (element >= *(first + index_child)) { 
         break;
      }
 
      *(first + current) = *(first + index_child);
      current = index_child;
   }
   *(first + current) =  element;
}
 
template <class Iterator>
void SortByHeap(Iterator first, Iterator last) {
   std::size_t size = last - first;
 
   for (int i = size / 2 - 1; i >= 0; --i) {
      DownHeap(first, i, size - 1);
   }
 
   for (int i = size - 1; i > 0; --i) {
      std::swap(*(first + i), *first);
      DownHeap(first, 0, i - 1);
   }
}
 
int main() {
   std::vector <int> v_nums = { 2, 0, -4, 7, -5, 8, 10, 15, -6 };
 
   SortByHeap(v_nums.begin(), v_nums.end());
   
   std::for_each(v_nums.begin(), v_nums.end(), [](int number) {
      std::cout << number << std::endl;
   } );
 
   return 0;
}
Пирамидальная сортировочка.. Удачи
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru