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

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

09.11.2015, 10:06. Просмотров 349. Ответов 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...

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

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

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

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

10
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
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
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
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
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
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
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
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
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
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

Как объявить в цикле переменные разного типа
переменные объявленная в цикле вот например в данном случае for(int...

Массив указателей на функции, возвращающие значения разного типа
Подскажите,возможно ли создать массив указателей на функции, которые возвращали...

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


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

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

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