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

Отсортировать массив с помощью сортировки методом вставки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Исходники виртуальной машины http://www.cyberforum.ru/cpp-beginners/thread347235.html
Здравствуйте! ни у кого случаем нет исходников какой либо виртуальной машины? очень нужно.. хотя бы самый простой.. чтобы около 50 команд
C++ Наследование классов Здравствуйте. Помогите пожалуйста решить проблему по наследованию классов. Есть базовый класс class parent { protected: int x; public: void Fill() { x = 5; } http://www.cyberforum.ru/cpp-beginners/thread347200.html
Ошибка при компиляции C++
Доброго дня! Есть код: char str; DWORD buf = sizeof(str); Работает отлично, но мне нужно сделать несколько переменных и я решил запихать это все в массив: char str; DWORD buf; buf = sizeof(str);
C++ Работа с классом string в C++
Как прочитать данные из файлы в строковую переменную string?
C++ Подскажите литературу теорию и практику по написанию исходного кода на С++ http://www.cyberforum.ru/cpp-beginners/thread347074.html
Подскажите литературу теорию и практику по написанию исходного кода на С++. Если есть с подробным разбором текста по строкам, как и что с чем взаимодействует и какой результат получается пошагово!? Желательно в области сетей, интернета, игр.
C++ Как передать массив в функцию не указывая размер Хочу сделать функцию для сортировки массивов с разным размером как передать массив в функцию не указывая его размер ? подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
01.09.2011, 21:46     Отсортировать массив с помощью сортировки методом вставки
Spiritos, попробуй для 10-ки преобразовать код и запись хедеров (<iostream> <cstdlib>)так как ниже, обрати внимание что ввёл using namespace std;

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
81
82
83
84
85
#include <iostream>//i/o
#include <cstdlib>  //srand 
 
using namespace std;  
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
        for(char* ps=s; *ps; ps++){
                if(*ps=='ё')
                        stream<<char(241);
                else if(*ps=='Ё')
                        stream<<char(240);
                else if(*ps>=-64 && *ps<=-17)                   
                        stream<<char(*ps+64+128);
                else if(*ps<0)
                        stream<<char(*ps+64+176);
                else
                        stream<<*ps;
        }
        return stream;
}
 
int GetRandNum(int NumMax);
void SortMass(int m, int n, int ** mass);
 
int main()
{
    char ch;
    int **mass,rows,cols,i,j;
    do
    {
        srand(0);
        std::cout<<"Введите число строк массива\r\n";
        std::cin>>rows;
        std::cout<<"Введите число столбцов массива\r\n";
        std::cin>>cols;
        std::cout<<"Исходный массив\r\n";
        mass = new int *[rows];
        for(i = 0; i < rows; i++)
        {
            mass[i] = new int[cols];
            for(j = 0; j < cols; j++)
                std::cout<<(mass[i][j] = GetRandNum(100))<<" ";
            std::cout<<"\r\n";
        }
        std::cout<<"Массив после сортировки\r\n";
        SortMass(rows, cols, mass);
        std::cout<<"Y - новый ввод\r\n";
        std::cin>>ch;
    }
    while(ch == 'Y' || ch == 'y');
    return 0;
}
 
int GetRandNum(int NumMax)
{
    int val = rand();
    while(NumMax < val)
        val = rand();
    return val;
}
 
void SortMass(int m, int n, int ** mass)
{
    int * vec = new int[m*n],buf;
    for(int i = 0,j,k = 0; i < m; i++)
    {
        for(j = 0; j < n; j++,k++)
            vec[k] = mass[i][j];
    }
    for(i = 1; i < k; i++)
    { 
        buf = vec[i];
        for(j = i - 1; j >= 0 && buf < vec[j]; j--)
            vec[j + 1]= vec[j]; //сдвиг на одну позицию
        vec[j + 1] = buf;
    }
    for(i = 0,k = 0; i < m; i++)
    {
        for(j = 0; j < n; j++,k++)
            std::cout<<(mass[i][j] = vec[k])<<" ";
        std::cout<<"\r\n";
    }
    delete [] vec;
}
[Работа алгоритма]
Введите число строк массива
7
Введите число столбцов массива
8
Исходный массив
38 1 24 6 24 4 100 73
90 3 32 45 57 12 85 82
24 31 19 91 88 7 35 23
90 81 22 74 4 44 46 8
94 7 28 10 38 1 100 73
55 60 62 58 14 22 40 35
2 31 83 24 16 81 47 32
Массив после сортировки
1 1 2 3 4 4 6 7
7 8 10 12 14 16 19 22
22 23 24 24 24 24 28 31
31 32 32 35 35 38 38 40
44 45 46 47 55 57 58 60
62 73 73 74 81 81 82 83
85 88 90 90 91 94 100 100
Y - новый ввод

Добавлено через 14 секунд
Spiritos, попробуй для 10-ки преобразовать код и запись хедеров (<iostream> <cstdlib>)так как ниже, обрати внимание что ввёл using namespace std;

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
81
82
83
84
85
#include <iostream>//i/o
#include <cstdlib>  //srand 
 
using namespace std;  
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
        for(char* ps=s; *ps; ps++){
                if(*ps=='ё')
                        stream<<char(241);
                else if(*ps=='Ё')
                        stream<<char(240);
                else if(*ps>=-64 && *ps<=-17)                   
                        stream<<char(*ps+64+128);
                else if(*ps<0)
                        stream<<char(*ps+64+176);
                else
                        stream<<*ps;
        }
        return stream;
}
 
int GetRandNum(int NumMax);
void SortMass(int m, int n, int ** mass);
 
int main()
{
    char ch;
    int **mass,rows,cols,i,j;
    do
    {
        srand(0);
        std::cout<<"Введите число строк массива\r\n";
        std::cin>>rows;
        std::cout<<"Введите число столбцов массива\r\n";
        std::cin>>cols;
        std::cout<<"Исходный массив\r\n";
        mass = new int *[rows];
        for(i = 0; i < rows; i++)
        {
            mass[i] = new int[cols];
            for(j = 0; j < cols; j++)
                std::cout<<(mass[i][j] = GetRandNum(100))<<" ";
            std::cout<<"\r\n";
        }
        std::cout<<"Массив после сортировки\r\n";
        SortMass(rows, cols, mass);
        std::cout<<"Y - новый ввод\r\n";
        std::cin>>ch;
    }
    while(ch == 'Y' || ch == 'y');
    return 0;
}
 
int GetRandNum(int NumMax)
{
    int val = rand();
    while(NumMax < val)
        val = rand();
    return val;
}
 
void SortMass(int m, int n, int ** mass)
{
    int * vec = new int[m*n],buf;
    for(int i = 0,j,k = 0; i < m; i++)
    {
        for(j = 0; j < n; j++,k++)
            vec[k] = mass[i][j];
    }
    for(i = 1; i < k; i++)
    { 
        buf = vec[i];
        for(j = i - 1; j >= 0 && buf < vec[j]; j--)
            vec[j + 1]= vec[j]; //сдвиг на одну позицию
        vec[j + 1] = buf;
    }
    for(i = 0,k = 0; i < m; i++)
    {
        for(j = 0; j < n; j++,k++)
            std::cout<<(mass[i][j] = vec[k])<<" ";
        std::cout<<"\r\n";
    }
    delete [] vec;
}
[Работа алгоритма]
Введите число строк массива
7
Введите число столбцов массива
8
Исходный массив
38 1 24 6 24 4 100 73
90 3 32 45 57 12 85 82
24 31 19 91 88 7 35 23
90 81 22 74 4 44 46 8
94 7 28 10 38 1 100 73
55 60 62 58 14 22 40 35
2 31 83 24 16 81 47 32
Массив после сортировки
1 1 2 3 4 4 6 7
7 8 10 12 14 16 19 22
22 23 24 24 24 24 28 31
31 32 32 35 35 38 38 40
44 45 46 47 55 57 58 60
62 73 73 74 81 81 82 83
85 88 90 90 91 94 100 100
Y - новый ввод
 
Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru