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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Закрытое наследование. Вывод строки http://www.cyberforum.ru/cpp-beginners/thread1179338.html
Здравствуйте. Необходимо вывести элемент класса std::string в данном случае: class Wine : protected Pair, private string { int years; public: Wine(const char* l, int y, const int* v, const int* b) : Pair(v, y, b, y), string(l) { years = y; }
C++ Оценка вычислительной сложности алгоритма Здравствуйте! Вот написал программу которая вычисляет максимальную сумму каждой последовательности рекурсивным методом. Но не в этом суть. Реализовал замер времени за сколько выполняется программа. Теперь задача немного изменилась, нужно сделать так что бы программа считала время поиска максимальной последовательности из 10000, 20000 тысяч элементов и так до 100000 и выводила результат, например:... http://www.cyberforum.ru/cpp-beginners/thread1179337.html
Добавить функции в программе со структурой NOTE C++
Вечер добрый всем. Подскажите пожалуйста, как мне мою программу переделать с функциями? Вот моя программа:// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; struct NOTE {
Работа с потоками. Поиск максимального элемента в массиве C++
Есть рабочая программа поиска максимального элемента в массиве. #include <iostream> #include <conio.h> #include "windows.h" #include <process.h> #include <stdio.h> using namespace std; int a,i,N,T,k; int main()
C++ Функция, которая возвращает значение в классе http://www.cyberforum.ru/cpp-beginners/thread1179313.html
Уважаемые, подскажите пожалуйста. У меня есть программа. (созд. списка; различные операции над списком и т.д.) Я пытаюсь ее переделать, но с классом. Как мне в publicЕ обозначить прототип этой функции? И как мне потом определить эту функцию в классе? Вот моя функция: List *find1(List *Head, int b) { List *first = Head; while (first != NULL) { if (first->inf == b)
C++ Рекурсия для вычисления квадрата числа Не пойму в чем дело, собственно ошибку описал в комменте, не судите строго первый пост на форуме, только что зарегистрировался просто безвыходное уже... #include "stdio.h" #include "windows.h" #include <cstdlib> int main() // В свойствах консоли выставить шрифт "Lucida Console" { SetConsoleCP(1251); SetConsoleOutputCP(1251); подробнее

Показать сообщение отдельно
Gmails
5 / 5 / 2
Регистрация: 08.04.2014
Сообщений: 241
18.05.2014, 16:17     Пирамидальная сортировка
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
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
void iswap(int &n1, int &n2)//обмен
{     
    int temp = n1;
    n1 = n2;
    n2 = temp;
}
 int main(){
    
    setlocale(0,"");
    puts("Пирамидальная сортировка:\n");{
    int countcompare=0; //счетчик сравнений
    int countswap=0; //счетчик обменов
    int const n = 100;
    int a[n];
    for ( int i = 0; i < n; ++i ) 
    a[i]=rand()%10;
 
    for ( int i = 0; i < n; ++i ) 
    cout<<a[i]<<" ";
    
    //-----------сортировка------------//
    
    int sh = 0; //смещение
    bool b = false;
    for(;;)
    {
    b = false;
    for ( int i = 0; i < n; i++ )
    {  
        if( countcompare++,i * 2 + 2 + sh < n )
        {
        if(countcompare++, ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
        {
            if (countcompare++, a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh] )
            {
            iswap( a[i + sh], a[i * 2 + 1 + sh] );countswap++;
            b = true;
            }
            else if (countcompare++, a[i * 2 + 2 + sh] < /*>*/ a[ i * 2 + 1 + sh])
                 {
                     iswap( a[ i + sh], a[i * 2 + 2 + sh]);countswap++;
                     b = true;
                 }
        }
        //дополнительная проверка для последних двух элементов
               
            if( countcompare++,a[i*2 + 2 + sh] < /*>*/ a[i*2 + 1 + sh] )
            {
            iswap( a[i*2+1+sh], a[i * 2 +2+ sh] );countswap++;
                        b = true;
            }
        }
        else if( countcompare++,i * 2 + 1 + sh < n )
             {
                 if( countcompare++,a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
                 {
                     iswap( a[i + sh], a[i * 2 + 1 + sh] );countswap++;
                     b = true;
                 }
             }
    }
    if (!b) sh++; //смещение увеличивается, когда на текущем этапе
              //сортировать больше нечего
    if ( sh + 2 == n ) break;
    }  //конец сортировки
 
 
    cout << endl << endl;
    cout<<"\nсравнений:"<<countcompare<<endl;
    cout<<"\nОбменов"<<countswap<<endl;
    puts("После сортировки:\n");
    for ( int i = 0; i < n; ++i ) cout << a[i] << " ";}
    
    getch();
    return 0;
}
 
Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru