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

Сортировка. Счетчики - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В одномерном массиве, вычислить много чего. Всё в описании. Спасите http://www.cyberforum.ru/cpp-beginners/thread824979.html
Помогите пожалуйста!.. Вводить из клавиатуры массивы и обрабатывать их, пока на запрос “Хотите продолжать работу дальше (да, нет) ?” пользователь не ответит “нет”. Введены линейные массивы обрабатывать за заданными алгоритмами а), б) и в), какие оформить в виде подпрограмм (функций). В подпрограммах-функциях ни введения, ни выведения данных, не должно быть. Главная функция должна вводить данные...
C++ Соединение нескольких одномерных массивов в одну программу Помогите пожалуйста решить 4 задачи так, чтобы они были записаны одной программой. 1. Найдите количество элементов, находящихся в диапазоне между двумя заданными числами. 2. Упорядочите элементы массива по убыванию модулей элементов. 3. Найдите сумму элементов массива, расположенных после первого положительного элемента. 4. Из данного массива и другого массива такого же типа, но другой... http://www.cyberforum.ru/cpp-beginners/thread824977.html
C++ Ассоциативный массив в С++ (типо пэхапе)
Где можно посмотреть такой класс? Сделал такое, но пространства имен не изучал еще. Как сделать так что бы можно было написать: using namespace Ass; и мне бы не приходилось каждый раз писать расширение области видимости в индексах Ass::ID, Ass::SCORE using namespace std; class Ass { private:
Погрешность,значение функции.Задача C++
У нас есть полином, для которого нужно составить таблицу значений на интервале с шагом 0.05 и точностью 10^4 и функциональный ряд для известной функции, значение которой нужно вычислить с заданной точностью ε для любого заданного x, используя рекурентные соотношения между членами ряда, и сравнить со значением, что можно получить из соответствующей функции языка С- P(x) = 0.374x5− 0.143x4 +...
C++ Программа работающая с файлом http://www.cyberforum.ru/cpp-beginners/thread824962.html
Друзья, помогите решить следующую задачу: Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются только два раза, в том порядке, в котором они встречаются в тексте.
C++ ПОмогите найти ошибку Программа работает, но она выдаёт все строки одинаковые .А они должны быть разные. Вычислить m значений заданной функции f(x) на отрезке . Результаты оформить в виде табл. 1. Столбцы таблицы: 1 — значение xi; 2 — значение функции f1(xi), вычисленное с использованием библиотечных функций компилятора; 3 — значение функции f2(xi), вычисленное с помощью явного разложе-ния в ряд (итерационный... подробнее

Показать сообщение отдельно
boycott
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 5
01.04.2013, 18:15     Сортировка. Счетчики
Всем привет, достаточно долго сижу на этом сайте, вот в первые решил попросить помощи, надеюсь на вас!
Вообщем задание было следующее: Отсортировать каждый столбик двумерной матрицы по возрастанию различными способами и вывести на экран количество сравнений и перестановок в каждой сортировке. Собственно программу то я написал, а вот со счетчиками уже около месяца разобраться до конца не могу.
Пузырек

Здесь вроде бы все правильно, но я не уверен
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
void bubble_sort()
{
    int bss=0, bsp=0, p, pokaz;         // bss - Bubble Sort Sravneniya bsp - Bubble Sort Perestanovki
    int xx=x, yy=y;
    for (int b = 0; b < xx; b++)
    {
        pokaz=-1;
        do
        {
            p=0;
            for (int a = 0; a < yy-1 ; a++)
            {
                bss++;
                if (mas1[a+1][b] < mas1[a][b])
                {
                    tmp = mas1[a][b];
                    mas1[a][b]=mas1[a+1][b];
                    mas1[a+1][b]=tmp;
                    bsp++;
                    p++;
                }
            }
            pokaz++;
        } while (p!=0);
        if (pokaz!=0)
        {bss--;}
    }

Сортировка выбором
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
void selection_sort()
{
    int sss=0, ssp=0;       // sss - Selection Sort Sravneniya ssp - Selection Sort Perestanovki
    for (int j = 0; j < x; j++)
    { 
        for (int i=0; i <= y-1; i++)
        {
            
            int pos = i; 
            int tmp = mas1[i][j];
            for (int m=i+1; m < y; m++)
            { 
                sss++;
                if (mas1[m][j] < mas1[pos][j]) 
                {
                    pos = m;
                    ssp++;
                }
            }
            mas1[i][j] = mas1[pos][j]; 
            mas1[pos][j] = tmp;
            //ssp++;
        }
    }

Сортировка вставками
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void insert_sort()
{
    int iss=0, isp=0;           // iss - Insert Sort Sravneniya isp - Insert Sort Perestanovki
    int n;
    for (int j = 0; j < x; j++)
    { 
        for (int i = 1; i < y; i++)
        {
            iss++;
            int tmp = mas1[i][j]; 
            for (n = i-1; n >= 0 && mas1[n][j] > tmp; n--) 
            {
                mas1[n + 1][j] = mas1[n][j];
                iss++;
            }
            
            mas1[n + 1][j] = tmp;  
            isp++;
 
        }
    }

Сортировка Шелла
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
void shell_sort() 
{
    long inc, i, j, seq[40];
    int s;
    int shss=0, shsp=0;     // shss - SHell Sort Sravneniya, shsp - SHell Sort Perestanovki
 
    s = increment(seq, y); // вычисление последовательности приращений
    while (s >= 0)  // сортировка вставками с инкрементами inc[] 
    {
         inc = seq[s--];
         for (j = 0; j < x; j++)
         {
            shss++;
            for (i = inc; i < y; i++) 
            {
                int tmp = mas1[i][j];
                shss++;
                for (int k = i-inc; (k >= 0) && (mas1[k][j] > tmp); k -= inc)
                {
                    mas1[k + inc][j] = mas1[k][j];
                    mas1[k][j] = tmp;
                    shsp++;
                }
            }
         }
    }

Быстрая сортировка
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
int QSORT(int first, int last, int i) 
{
    int f=first, l=last;
    int qss=0, qsp=0;                         // qss - Quick Sort Sravneniya qsp - Quick Sort Perestanovki
        
        do
        {   
            int mid = mas1[(first+last)/2][i];
            while (mas1[f][i] < mid)
            f++;
            while (mas1[l][i] > mid)
            l--;
            qss++;
            if (f <= l)
            {
                qsp++;
                int tmp = mas1[f][i];
                mas1[f][i] = mas1[l][i];
                mas1[l][i] = tmp;
                f++;
                l--;
            }
 
            if (first < l)
            {QSORT(first,l,i);}
            if (f < last)
            {QSORT(f,last,i);}
        } while (f <= l);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru