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

Сортировка пузырьком и вставками - C++

Восстановить пароль Регистрация
 
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52
25.11.2013, 15:44     Сортировка пузырьком и вставками #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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
void bubbleSort(int *, int); // прототип функции сортировки пузырьком
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    int *sorted_array = new int[size_array]; // одномерный динамический массив
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    bubbleSort(sorted_array, size_array); // вызов функции сортировки пузырьком
 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "\n";
 
    system("pause");
    return 0;
}
 
void bubbleSort(int* arrayPtr, int length_array) // сортировка пузырьком
{
    int temp = 0; // временная переменная для хранения элемента массива
    bool exit = false; // болевая переменная для выхода из цикла, если массив отсортирован
 
    while (!exit) // пока массив не отсортирован
    {
        exit = true;
        for (int int_counter = 0; int_counter < (length_array - 1); int_counter++) // внутренний цикл
            //сортировка пузырьком по возрастанию - знак >
            //сортировка пузырьком по убыванию - знак <
        if (arrayPtr[int_counter] < arrayPtr[int_counter + 1]) // сравниваем два соседних элемента
        {
            // выполняем перестановку элементов массива
            temp = arrayPtr[int_counter];
            arrayPtr[int_counter] = arrayPtr[int_counter + 1];
            arrayPtr[int_counter + 1] = temp;
            exit = false; // на очередной итерации была произведена перестановка элементов
        }
    }
}
Сортировка вставками

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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
void insertionSort(int *, int); // прототип функции сортировки вставками
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    int *sorted_array = new int[size_array]; // одномерный динамический массив
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n";
 
    insertionSort(sorted_array, size_array); // вызов функции сортировки вставками
 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "\n";
    delete[] sorted_array; // высвобождаем память
    system("pause");
    return 0;
}
 
void insertionSort(int *arrayPtr, int length) // сортировка вставками
{
    int temp, // временная переменная для хранения значения элемента сортируемого массива
        item; // индекс предыдущего элемента
    for (int counter = 1; counter < length; counter++)
    {
        temp = arrayPtr[counter]; // инициализируем временную переменную текущим значением элемента массива
        item = counter - 1; // запоминаем индекс предыдущего элемента массива
        while (item >= 0 && arrayPtr[item] < temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        {
            arrayPtr[item + 1] = arrayPtr[item]; // перестановка элементов массива
            arrayPtr[item] = temp;
            item--;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 15:44     Сортировка пузырьком и вставками
Посмотрите здесь:

Сортировка матрицы вставками и пузырьком C++
Сортировка пузырьком C++
C++ Сортировка пузырьком
C++ Сортировка пузырьком
C++ Сортировка пузырьком
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yamko
11 / 11 / 2
Регистрация: 10.03.2013
Сообщений: 104
25.11.2013, 16:15     Сортировка пузырьком и вставками #2
Не умеете копировать?
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
25.11.2013, 16:20     Сортировка пузырьком и вставками #3
Действительно а в чем проблема скопировать функцию из второй программы в первую, объявить ее там и вызывать по мере надобности?!
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52
25.11.2013, 16:55  [ТС]     Сортировка пузырьком и вставками #4
ShadowFirst, значит есть проблема, если прошу помочь

Добавлено через 5 минут
Yamko, не умею, помогите
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
25.11.2013, 21:13     Сортировка пузырьком и вставками #5
Цитата Сообщение от SamLokers Посмотреть сообщение
ShadowFirst, значит есть проблема, если прошу помочь

Добавлено через 5 минут
Yamko, не умею, помогите
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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
void bubbleSort(int *, int); // прототип функции сортировки пузырьком
void insertionSort(int *arrayPtr, int length);
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    int *sorted_array = new int[size_array]; // одномерный динамический массив
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    bubbleSort(sorted_array, size_array); // вызов функции сортировки пузырьком
 
    insertionSort(sorted_array, size_array) //Вот вызов методом вставки, но похоже ваш массив портиться после          //сортировки пузырьком, по этому используйте вызов либо той либо этой функции
 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "\n";
 
    system("pause");
    return 0;
}
 
void bubbleSort(int* arrayPtr, int length_array) // сортировка пузырьком
{
    int temp = 0; // временная переменная для хранения элемента массива
    bool exit = false; // болевая переменная для выхода из цикла, если массив отсортирован
 
    while (!exit) // пока массив не отсортирован
    {
        exit = true;
        for (int int_counter = 0; int_counter < (length_array - 1); int_counter++) // внутренний цикл
            //сортировка пузырьком по возрастанию - знак >
            //сортировка пузырьком по убыванию - знак <
        if (arrayPtr[int_counter] < arrayPtr[int_counter + 1]) // сравниваем два соседних элемента
        {
            // выполняем перестановку элементов массива
            temp = arrayPtr[int_counter];
            arrayPtr[int_counter] = arrayPtr[int_counter + 1];
            arrayPtr[int_counter + 1] = temp;
            exit = false; // на очередной итерации была произведена перестановка элементов
        }
    }
}
 
void insertionSort(int *arrayPtr, int length) // сортировка вставками
{
    int temp, // временная переменная для хранения значения элемента сортируемого массива
        item; // индекс предыдущего элемента
    for (int counter = 1; counter < length; counter++)
    {
        temp = arrayPtr[counter]; // инициализируем временную переменную текущим значением элемента массива
        item = counter - 1; // запоминаем индекс предыдущего элемента массива
        while (item >= 0 && arrayPtr[item] < temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        {
            arrayPtr[item + 1] = arrayPtr[item]; // перестановка элементов массива
            arrayPtr[item] = temp;
            item--;
        }
    }
}
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
25.11.2013, 21:36     Сортировка пузырьком и вставками #6
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
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <iomanip>
#include <ctime>
#include <windows.h>
using namespace std;
 
void bubbleSort(int *, int); // прототип функции сортировки пузырьком
void insertionSort(int *arrayPtr, int length);
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    int *sorted_array = new int[size_array]; // одномерный динамический массив
    cout << "random" << endl;
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    bubbleSort(sorted_array, size_array); // пузырек
 
    cout << "bubbleSort" << endl;
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "\n\n";
 
    cout << "random" << endl;
    for (int counter = 0; counter < size_array; counter++)
    {
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout << setw(2) << sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << "\n\n";
 
    insertionSort(sorted_array, size_array); // вставка
    
    cout << "insertionSort" << endl;
    for (int counter = 0; counter < size_array; counter++)
    {
        cout << setw(2) << sorted_array[counter] << "  "; // печать отсортированного массива
    }
    cout << "\n";
 
    system("pause");
    return 0;
}
 
void bubbleSort(int* arrayPtr, int length_array) // сортировка пузырьком
{
    int temp = 0; // временная переменная для хранения элемента массива
    bool exit = false; // болевая переменная для выхода из цикла, если массив отсортирован
 
    while (!exit) // пока массив не отсортирован
    {
        exit = true;
        for (int int_counter = 0; int_counter < (length_array - 1); int_counter++) // внутренний цикл
            //сортировка пузырьком по возрастанию - знак >
            //сортировка пузырьком по убыванию - знак <
        if (arrayPtr[int_counter] < arrayPtr[int_counter + 1]) // сравниваем два соседних элемента
        {
            // выполняем перестановку элементов массива
            temp = arrayPtr[int_counter];
            arrayPtr[int_counter] = arrayPtr[int_counter + 1];
            arrayPtr[int_counter + 1] = temp;
            exit = false; // на очередной итерации была произведена перестановка элементов
        }
    }
}
 
void insertionSort(int *arrayPtr, int length) // сортировка вставками
{
    int temp, // временная переменная для хранения значения элемента сортируемого массива
        item; // индекс предыдущего элемента
    for (int counter = 1; counter < length; counter++)
    {
        temp = arrayPtr[counter]; // инициализируем временную переменную текущим значением элемента массива
        item = counter - 1; // запоминаем индекс предыдущего элемента массива
        while (item >= 0 && arrayPtr[item] < temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        {
            arrayPtr[item + 1] = arrayPtr[item]; // перестановка элементов массива
            arrayPtr[item] = temp;
            item--;
        }
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 21:56     Сортировка пузырьком и вставками
Еще ссылки по теме:

Сортировка пузырьком C++
Сортировка пузырьком C++
C++ Сортировка пузырьком

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

Или воспользуйтесь поиском по форуму:
okpettythief
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 6
25.11.2013, 21:56     Сортировка пузырьком и вставками #7
копировать: ctrl+insert
вставить : shift+insert
Yandex
Объявления
25.11.2013, 21:56     Сортировка пузырьком и вставками
Ответ Создать тему
Опции темы

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