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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Напишите программу, которая печатает на экране собственный исходный файл в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread999959.html
Напишите программу, которая печатает на экране собственный исходный файл в обратном порядке. Помогите пожалуйста!!!
C++ вывод чисел как можно вывести на экран числа в виде таблицы: 6 6 6 6 6 7 7 7 7 8 8 8 9 9 10 9 9 8 8 8 7 7 7 7 6 6 6 6 6 http://www.cyberforum.ru/cpp-beginners/thread999941.html
Метод верхней релаксации для уравнения Пуассона C++
Всем привет! Есть краевая задача для уравнения Пуассона в области, составленной из прямоугольников. Функции psi_1,3,5(y) = sin(Pi*y), psi_2,4,6(x) = sin(Pi*x), f(x,y) = 1-x*x-y*y. Параметры a = b = 2, c = d = 1. Я так понимаю, область можно разбить на 2 прямоугольника и считать для каждого отдельно. Т.е. получается матрица заполняется граничными условиями вот так?: Нигде не могу найти...
Бонусы C++
Учу Дерект 3Д Пишу простую игру. Вот отрезок из кода. for (int index = 0; index < nbonus; index++) { if (all_bonus_is_eten == false) { if (bonus_y + 15 < user_y || bonus_y - 15 > user_y ||
C++ Упорядочить массив Х(N) по возрастанию, найти сумму положительных элементов массива http://www.cyberforum.ru/cpp-beginners/thread999918.html
Помогите пожалуйста сделать. Упорядочить массив Х(N) по возрастанию, найти сумму положительных элементов массива.
C++ Вхождение точки в область Определить, попадает ли точка с координатами (X,Y) в заданную область. Код: #include <stdio.h> #include <conio.h> #include <math.h> void main() { подробнее

Показать сообщение отдельно
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
07.11.2013, 00:14  [ТС]     Пирамидальная сортировка
Цитата Сообщение от reckless91 Посмотреть сообщение
Вот и я так думаю, пишите - посмотрим, подправим.
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void iswap(int &n1, int &n2)
{
    int temp = n1;
    n1 = n2;
    n2 = temp;
}
 
int main()
{
    int const n = 12;
    int a[n] = {3, 9, 14, 12, 2, 17, 15, 8, 6, 18, 20, 1};
    for ( int i = 0; i < n; ++i ) 
   {
       a[i] = n - i; cout << a[i] << " "; 
   }
  //-----------сортировка------------// 
 
 
    int sh = 0; //смещение
    bool b = false;
    for(;;)
    {
        b = false;
        for ( int i = 0; i < n; i++ )
        {
            if( i * 2 + 2 + sh < n )
            {
                if( ( a[i + sh] > a[i * 2 + 1 + sh] ) || ( a[i + sh] > a[i * 2 + 2 + sh] ) )
                {
                    if ( a[i * 2 + 1 + sh] <  a[i * 2 + 2 + sh] ) 
                    {
                        iswap( a[i + sh], a[i * 2 + 1 + sh] );
                        b = true;
                    }
                    else if ( a[i * 2 + 2 + sh] < a[ i * 2 + 1 + sh]) 
                         {
                             iswap( a[ i + sh], a[i * 2 + 2 + sh]);
                             b = true;
                         }
                }
                //дополнительная проверка для последних двух элементов
               //с помощью этой проверки можно отсортировать пирамиду 
               //состоящую всего лишь из трех элементов
                    if( a[i*2 + 2 + sh] < a[i*2 + 1 + sh] ) 
                        {
                        iswap( a[i*2+1+sh], a[i * 2 +2+ sh] );
                        b = true;
                        }
            }
            else if( i * 2 + 1 + sh < n )
                 {
                     if( a[i + sh] > a[ i * 2 + 1 + sh] )
                     {
                         iswap( a[i + sh], a[i * 2 + 1 + sh] );
                         b = true;
                     }
                 }
        }
        if (!b) sh++; //смещение увеличивается, когда на текущем этапе 
                      //сортировать больше нечего
        if ( sh + 2 == n ) break; 
    }  //конец сортировки
 
 
    cout << endl << endl;
    for ( int i = 0; i < n; ++i ) cout << a[i] << " "; 
 
 
    _getch();
    return 0;
}
жду Вашей критики
 
Текущее время: 16:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru