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

5 алгоритмов сортировки - C++

Восстановить пароль Регистрация
 
karinka_malinka
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 2
20.11.2016, 02:16     5 алгоритмов сортировки #1
Ребят,помогите с курсовой по программированию,пожалуйста.Нужно создать матрицу(с помощью векторов,рандомную),посчитать умножение елементов в каждом столбике ,записать в одномерный массив и отсортировать и массив и матрицу(+ вывести количество сортировок и матрицы и массива). + записать каждую сортировку в файлы исходного кода.

Работу я уже начала,но не получается отсортировать матрицу.
Ниже примеры которые я уже написала:

Заголовочные файлы :
1)Osnovnii_vectoru.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef Osnovnii_vectoru_h
#define Osnovnii_vectoru_h
#include "iostream"
#include "math.h"
#include <vector>
#include <iterator>
#include <random>
#include <ctime>
#include <locale>
#include <iomanip>
#endif 
 
using namespace std;
 
void osnovnaya_matrix(vector<vector<int>>&Matrix, int m, int n);
void operazii_s_stolbzami(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n);
void masiv_iz_dobutkiv(vector<int>&coor);
void otsortirovanaya_matrix(vector<vector<int>>&Matrix);
 
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1);
void sortirovka_vuborom(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1);

Файлы исходного кода:

1)Matrix.cpp:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    vector<vector<int>>Matrix;
    vector<int>Vect;
    vector<int>coor;
    
    int m, n;
    int kilk = 0, kilk1 = 0;
 
    cout << "Bведiть к-сть рядкiв : ";
    cin >> m;
    cout << "Bведiть к-сть стовпцiв : ";
    cin >> n;
 
    cout << "Матриця X\n";
    osnovnaya_matrix(Matrix, m, n);
    cout << endl;
 
    operazii_s_stolbzami(Matrix,coor, m, n);
    cout << "\nМасив з добуткiв: \n";
    masiv_iz_dobutkiv(coor);
    cout << endl;
    
    sortirovka_bulbashkoi(Matrix,coor, m, n, kilk, kilk1);
    //sortirovka_vuborom(Matrix, coor, m, n, kilk, kilk1);
 
 
    cout << "\nВiдсортована матриця:\n";
    otsortirovanaya_matrix(Matrix);
    cout << "\nВiдсортований масив:\n";
    masiv_iz_dobutkiv(coor);
    
    cout << endl << "\nК-сть перестановок в масивi= " << kilk;
    cout << endl << "К-сть перестановок в матрицi= " << kilk1 << endl;
    
 
    return 0;
}
2)Основные векторы:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
void osnovnaya_matrix(vector<vector<int>>&Matrix, int m, int n)
{
    default_random_engine e(time(NULL));
    uniform_int_distribution<int> u(-10, 10);
    vector<int>Vect;
    for (size_t j = 0; j != m;j++)
    {
        for (size_t i = 0; i != n; i++)
        {
            Vect.push_back(u(e));
            cout << setw(4) << Vect[i] << " ";
        }
        Matrix.push_back(Vect);
        cout << endl;
        Vect.clear();
    }
}
 
void operazii_s_stolbzami(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n)
{
    for (int j = 0; j < n; j++)
    {
        cout << "Столбец №" << j + 1;
        int dob = 1;
        for (int i = 0; i<m; i++)
        {
            dob *= Matrix[i][j];
        }
        cout << " Добуток елементiв= " << dob << endl;
        coor.push_back(dob);
    }
}
 
void masiv_iz_dobutkiv(vector<int>&coor)
{
    for (vector<int>::iterator iter = coor.begin(); iter != coor.end(); iter++)
    {
        cout << setw(4) << *iter << " ";
    }
}
 
void otsortirovanaya_matrix(vector<vector<int>>&Matrix)
{
    for (vector<vector<int>>::iterator matiter = Matrix.begin();matiter != Matrix.end();matiter++)
    {
        for (vector<int>::iterator veciter = matiter->begin();veciter != matiter->end();veciter++)
        {
            cout << setw(4) << *veciter << " ";
 
        }
        cout << endl;
    }
}
3)Бульбашка:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
 
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    int buff;
    int flag;
 
    do
    {
        flag = 0;
        for (int j = 0;j < m ;j++)
        {
            for (int i = 0;i < (n-1);i++)
            {
                if (coor[i] < coor[i + 1])
                {
                    buff = coor[i];
                    coor[i] = coor[i + 1];
                    coor[i + 1] = buff;
 
                    flag = 1;
                    kilk = kilk + 1;
 
                    for (int k = 0;k<m;k++)
                    {
                        buff = Matrix[k][j];
                        Matrix[k][j] = Matrix[k][i];
                        Matrix[k][i] = buff;
                        kilk1 = kilk1 + 1;
                    }
                }
            }
        }
    } while (flag != 0);
}
4)Вибором:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
void sortirovka_vuborom(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    for (int j = 0; j < m; ++j)
    {
        int buff = coor[0];
 
        for (int i = j+1; i < n-1; ++i)
        {
            if (coor[i] <coor[i+1])
            {
                buff = coor[i];
                coor[i] = coor[i+1];
                coor[i+1] = buff;
 
                kilk = kilk + 1;
                for (int k = 0;k < m;k++)
                {
                    buff = Matrix[k][i];
                    Matrix[k][i] = Matrix[k][j];
                    Matrix[k][j] = buff;
                    kilk1 = kilk1 + 1;
                }
            }
        }
    }
}

З.Ы. Буду благодарна за любую помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 02:16     5 алгоритмов сортировки
Посмотрите здесь:

C++ Сравнение алгоритмов сортировки ... алгоритм Шелла
C++ Сравнение алгоритмов сортировки массива
C++ Визуализация алгоритмов сортировки
C++ создать программу для сравнения алгоритмов сортировки
Реализация алгоритмов сортировки C++
C++ Сравнить время работы алгоритмов сортировки
C++ Сравнение алгоритмов сортировки Хоара и std::sort
Алгоритмы сортировки,сравнение алгоритмов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,579
20.11.2016, 11:30     5 алгоритмов сортировки #2

Не по теме:

Сортировка "бульбашкой" - это нечто.


И как матрица должна быть отсортирована? Только строки или как единое целое?
karinka_malinka
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 2
20.11.2016, 15:50  [ТС]     5 алгоритмов сортировки #3
По столбцах должна быть отсортирована.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,579
20.11.2016, 21:39     5 алгоритмов сортировки #4
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
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    int buff;
    int flag;
 
    for (int ii = 0; ii < n; ++ii)
    for(int i = 0; i < m - 1; ++i)
    {            
        for(int j = 0; j < m - 1; ++j)
        {     
            if (Matrix[ii][j + 1] < Matrix[ii][j])
            {
                std::swap(Matrix[ii][j + 1], Matrix[ii][j]);
                ++kilk;
            }
        }
    }
 
    for(int i = 0; i < m - 1; ++i)
    {            
        for(int j = 0; j < m - 1; ++j)
        {     
            if (coor[j + 1] < coor[j]) 
            {
                std::swap(coor[j + 1], coor[j]);
                ++kilk1;
            }
        }
    }
 
}
Yandex
Объявления
20.11.2016, 21:39     5 алгоритмов сортировки
Ответ Создать тему
Опции темы

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