Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 100
1

Сортировка массивов разного типа

09.11.2015, 10:06. Просмотров 427. Ответов 10
Метки нет (Все метки)

Само задание: Массив данных заполняется случайным образом. Рассмотреть массивы данных из элементов типа char и double. Использовать перегрузку функции для реализации алгоритмов сортировки. Сформировать по 2 набора данных для каждого типа: 100 и 1 000 000 экземпляров.
Алгоритмы сортировки: вставкой и слитием. Определить скорость выполнения для каждого набора данных. Повторить данные действия итерационно 5 раз. Результаты сравнений занести в таблицу.
Кто может подсказать алгоритм, а лучше хоть часть кода программы, буду очень благодарен.
Метод сортировки знаю, но непонятен сам алгоритм задания.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2015, 10:06
Ответы с готовыми решениями:

Используя перегрузку функций определить максимальные значения элементов массивов разного типа
Используя перегрузку функций, написать программу определения максимального значения элемента...

Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур
Сабж. Нужен способ помещения разного рода типа данных в контейнеры типа массивов или структур...

Присвоение переменных разного типа
Использую я значит вот такую строку, пытаясь получить возвращаемые данные char и ulong. ULONG...

Ввод в строку данных разного типа
Скажите, пожалуйста как ввести такие данные: Иван 5 7 3 3 4 9 Алексей 3 1 2 3 чтобы сразу...

Объединить данные разного типа в векторе
есть вектор из 300 товаров. Из них 100 dress, 100 PC, 100 boots. Я хочу их соединить в один вектор...

10
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
09.11.2015, 10:50 2
Сделай 2 функции для одного метода, две для второго, с одинаковыми именами, но разным типом массива.
0
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 100
09.11.2015, 18:34  [ТС] 3
nmcf, а как это будет выглядить кодом? Совсем не понимаю как реализовать этот алгоритм и перегрузку.
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
09.11.2015, 19:33 4
Цитата Сообщение от EdHaker Посмотреть сообщение
Совсем не понимаю как реализовать этот алгоритм
Цитата Сообщение от EdHaker Посмотреть сообщение
Метод сортировки знаю
Так знаешь или нет?
C++
1
2
3
4
5
6
7
8
void merge_sort(char a[], int len)
{
//...
}
void merge_sort(double a[], int len)
{
//...
}
Для второго метода так же.
0
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 100
09.11.2015, 19:47  [ТС] 5
nmcf, да а что дальше? как Определить скорость выполнения для каждого набора данных. Повторить данные действия итерационно 5 раз. Результаты сравнений занести в таблицу.?
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
09.11.2015, 19:57 6
clock() используй для измерения. Здесь пример: http://www.cplusplus.com/reference/ctime/clock/?kw=clock
0
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 100
09.11.2015, 20:30  [ТС] 7
nmcf, а можно это как-то в общем коде? а то я вообще не знаю как это сложить в общий рабочий код(

Добавлено через 17 секунд
п.с не понятный пример про clock()
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
09.11.2015, 21:04 8
Функции объявляешь с возвратом double:
C++
1
2
3
4
5
6
7
8
double merge_sort(char a[], int len)
{
    clock_t t = clock(); // начало интервала
 
    // сортировка
 
    return static_cast<double>(clock() - t) / CLOCKS_PER_SEC; // конец интервала
}
Результат будет - время в секундах.
0
EdHaker
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 100
09.11.2015, 23:24  [ТС] 9
nmcf, и так сделать для каждой функции?
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
09.11.2015, 23:28 10
Да. Ты хоть одну разработай наконец.
0
Nastya15684
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 133
19.11.2015, 14:49 11
у меня похожее задание

Массив данных заполнять случайным образом. Рассмотреть массивы данных из элементов типа long и float. Использовать перегрузки функций для реализации алгоритмов сортировки.
Сформировать по два набора данных для каждого типа 5 и 10 000 экземпляров.
Алгоритмы сортировки: выбором и обменом. Определить скорость вычисления для каждого набора данных. Повторить данные действия итерационно 5 раз.

помогите исправить, очень нужно

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <time.h>
using namespace std;
double vibor(long A[],int n)
{
    clock_t t = clock();
    for (int i = 0; i < n; i++)
    {
        int min = i;
        for (int j = i + 1; j < n; j++)
        {
            if (A[j] > A[min])
            {
                min = j;
            }
        }
        swap(A[i], A[min]);
    }
    for (int i = 0; i < n; i++)
    {
        A[i];
    }
    return static_cast<double>(clock() - t) / CLOCKS_PER_SEC;
}
double vibor(float B[], int n)
{
    clock_t t = clock();
    for (int i = 0; i < n; i++)
    {
        int min = i;
        for (int j = i + 1; j < n; j++)
        {
            if (B[j] > B[min])
            {
                min = j;
            }
        }
        swap(B[i], B[min]);
    }
    for (int i = 0; i < n; i++)
    {
        B[i];
    }
    return static_cast<double>(clock() - t) / CLOCKS_PER_SEC;
}
double obmen(long A1[], int n)
{
    clock_t t = clock();
    for (int i = 0; i < n; i++)
    {
        for (int j = n - 1; j > i; j--)
        {
            if (A1[j] < A1[j - 1])
            {
                swap(A1[j], A1[j - 1]);
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        cout << A1[i] << ' ';
    }
    return static_cast<double>(clock() - t) / CLOCKS_PER_SEC;
}
double obmen(float B1[], int n)
{
    clock_t t = clock();
    for (int i = 0; i < n; i++)
    {
        for (int j = n - 1; j > i; j--)
        {
            if (B1[j] < B1[j - 1])
            {
                swap(B1[j], B1[j - 1]);
            }
        }
    }
 
    for (int i = 0; i < n; i++)
    {
        B1[i];
    }
    return static_cast<double>(clock() - t) / CLOCKS_PER_SEC;
}
int main()
{
    setlocale(LC_ALL, "rus");
    int const n = 5;
    int const m = 10000;
    long A[n];
    for (int i = 0; i < n; i++)
        A[i] = rand() % 100;
    long A1[m];
    for (int i = 0; i < m; i++)
        A1[i] = rand() % 100;
    float B[n];
    for (int i = 0; i < n; i++)
        B[i] = (rand() % 100) / 2;
    float B1[m];
    for (int i = 0; i < m; i++)
        B1[i] = (rand() % 100) / 2;
    for (int i = 0; i < 5; i++)
    {
        cout << i + 1 << " итерация:" << endl;
        cout << vibor(A, 5) << ' ';
        cout << vibor(A, 10000) << ' ';
        cout << vibor(B, 5) << ' ';
        cout << vibor(B, 10000) << ' ';
        cout << obmen(A1, 5) << ' ';
        cout << obmen(A1, 10000) << ' ';
        cout << obmen(B1, 5) << ' ';
        cout << obmen(B1, 10000) << endl;
    }
    system("pause");
    return 0;
}
0
19.11.2015, 14:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 14:49

Определения знака переменных разного типа
Используя перегрузку функций, написать программу определения знака переменных разного типа.

Хранение в массиве данных разного типа
Доброго времени суток. Возникла задача: Имеем массив byte buffer, а также переменные char...

Как объявить в цикле переменные разного типа
переменные объявленная в цикле вот например в данном случае for(int i=1,k=0;i&lt;=10;i++) после...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru