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

Метод пузырька - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Хеш-функции. Метод открытого хеширования http://www.cyberforum.ru/cpp-beginners/thread727430.html
Написать программу, которая реализует метод открытого хеширования и хеш-функцией, основанной на методе деления со остатком. Если можно, то с комментариями. Заранее спасибо.
C++ Контрольная сумма последовательности байтов Ребят,расскажите пожалуйста, что это такое, и как это делать? Вычислить контрольную сумму последовательности байтов, ограниченной двумя указателями. уже месяц не могу разобраться да найти нужное... http://www.cyberforum.ru/cpp-beginners/thread727415.html
C++ Сложно найти ошибку отладчиком
Здравствуйте, столкнулся с такой проблемой, в курсовой вылетает иногда ошибка list iterator not dereferencable Понятно, что это итератор вероятно вышел за границы контейнера. Причём через раз всё прорабатывает нормально (присутствует рандом))). А в отладчике, как известно, место такой ошибки не показывает. А пробежать по всему коду не реально ( много всяких циклов ) Так вот можно ли...
C++ переделать для комплексных чисел как? Есть вещественные.
есть программа для вещественных чисел,и её надо переделать для комплексных чисел а я не знаю как это намутит кто поможет? #include"stdafx.h" #include <stdio.h> #include <stdlib.h> #include<iostream> #include"time.h"
C++ Информационная система фитнес-клуба http://www.cyberforum.ru/cpp-beginners/thread727385.html
помогите сделать программу на СИ++ "Информационная система фитнес-клуба" ПОЖАЛУЙСТА
C++ логический квадрат на C++ По математичекой логике надо написать логический квадрат на C++))) помогите кто может) подробнее

Показать сообщение отдельно
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
12.12.2012, 19:07     Метод пузырька
На вскидку, наиболее эффективно замещать меньшее(или большее, зависит от направления, по которому мы будем просматривать сортированный массив) значение из каждой найденной пары волшебным числом -1, так как числа натуральные по условию. Если ограничения с чисел снять, придется вместо этого запоминать индексы, что сложнее алгоритмически.
Просматриваем отсортированный массив от большего к меньшему, подыскивая наиболее подходящую пару просмотром от меньшего к большему:
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
// ---------------------------------------------------------------------------
typedef vector <long> values;
 
// ---------------------------------------------------------------------------
short check_pairs( values &v, long n, long m, ofstream &file ) {
    if ( n % 2 ) {
        cout << "there should be en even amount of elements to break them in pairs";
        return 0;
    }
    if ( accumulate( v.begin( ), v.end( ), ( long long )0 ) > ( m - 1 ) * n / 2 ) {
        cout << "summ of elements is greater than half of greatest possible summ, breaking in pairs impossible";
        return 0;
    }
    sort( v.begin( ), v.end( ) );
    file << "pairs:\n\n";
    for ( size_t i = n, k, last; --i > 0; ) {
        if ( v[i] == -1 ) {
            continue;
        }
        for ( k = 0, last = -1; ; ++k ) {
            if ( k < i && v[k] == -1 ) {
                continue;
            }
            if ( k == i || ( v[i] + v[k] > m ) ) {
                if ( last == -1 ) {
                    return 0;
                }
                else {
                    file << "№" << i << " = " << v[i] << "\t\t" << "№" << last << " = " << v[last] << endl;
                    v[last] = -1;
                    break;
                }
            }
            last = k;
        }
    }
    return 1;
}
// ---------------------------------------------------------------------------
int _tmain( int argc, _TCHAR *argv[] ) {
    system( "chcp 1251" );
    system( "cls" );
    //////////////////////////////////////
    long n = 32000, m = 100;
    values v;
 
    ofstream out( "input.txt" );
    out << n << " " << m << endl;
    srand( time( NULL ) );
    for ( long i = 0; ++i <= n; out << rand( ) % ( m - 1 ) << endl );
    out.close( );
 
    ifstream in( "input.txt" );
    in >> n >> m;
    for ( long i = 0, tmp; ++i <= n; in >> tmp, v.push_back( tmp ) );
    in.close( );
 
    out.open( "out.txt" );
    if ( check_pairs( v, n, m, out ) ) {
        out << "\n\nyes";
    }
    else {
        out << "\n\nno";
    }
    out.close( );
 
    //////////////////////////////////////
    cout << "\n\n";
    system( "pause" );
    return 0;
}
// ---------------------------------------------------------------------------
Пусть вид функции main тебя не смущает тебя, зависит от компилятора. Тебе, вероятнее всего, больше подойдет int main()

Добавлено через 5 часов 28 минут
Хотя, нее - ничуть не сложней индексы запоминать, туплю потихоньку...
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru