0 / 0 / 0
Регистрация: 23.04.2019
Сообщений: 14
1

Специфичная сортировка массива

07.05.2020, 19:45. Показов 321. Ответов 4

В одномерном массиве расположить серии повторяющихся элементов в порядке
убывания длин серий. Например: 11112223345.
Подсказка: использовать массив из 99 счетчиков
То, что пока-что получилось. Отсортировал массив методом пузырьковой сортировки, чтобы было проще работать с массивом.
Понимаю, что для заполнения массива нужно поочередно от частой к редкой последовательности вводить нужные числа в массив, но вопрос в том, как находить числа и сколько раз они появились в массиве. Пока-что в голову заползает вариант с 99 int, но чую, что пахнет ошибкой. Да и реализация...
Буду благодарен за алгоритм.
В программе появляется меню, которое позволяет выбрать действие: закрыть программу, заполнить массив с клавиатуры, заполнить массив рандомными числами, отсортировать массив.

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
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
#define size 100
 
void zap(int arr[], int check);
void random(int arr[], int check1);
void vivod(int arr[], int check2);
void sort(int arr[], int check3);
 
int main()
{
    int option;
    setlocale(LC_ALL, "Russian"); // Добавляем русский язык
    int mass[size];
    cout << "Добро пожаловать в программу!\n";
    do
    {
        cout << "1. Выйти из программы \n";
        cout << "2. Заполнить массив случайными числами \n";
        cout << "3. Заполнить массив в ручную \n";
        cout << "4. Отсортировать массив \n";
        cout << "5. Вывести массив \n";
 
        do
        {
            cout << "Выберите действие: \n";
            cin >> option;
 
        } while (option < 1 && option > 5);
 
        switch (option)
        {
        case 1: cout << "Удачи! \n";
            break;
        case 2: random(mass,size);
            break;
        case 3: zap(mass,size);
            break;
 
        case 4: sort(mass, size);
            break;
        case 5: vivod(mass, size);
            break;
        }
    } while (option != 1);
    {
        return 0;
    }
}
 
void zap(int arr[], int check)      // Заполнение массива с клавиатуры
{
    cout << "Введите значения массива от 0 до 1000: \n";
    int i, n;
    for (i = 0;i < check;i++)
    {
        cin >> n;
        if (n < 0 || n > 1000)
        {
            cout << "Значение вводимых чисел от 0 до 1000\n";
        }
        else
        {
            arr[i] = n;
        }
    }
    
}
 
void random(int arr[], int check1)      // Заполнение массива случайными числами
{
    int i;
    cout << "Массив заполнился случайными числами \n\n";
    srand(time(0));
    for (i = 0;i < check1;i++)
    {
        arr[i] = 1 + rand()%1000;
    }
}
 
void vivod(int arr[], int check2)    // Вывод массива
{
    int i;
    cout << "Ваш массив: \n";
    for (i = 0;i < check2;i++)
    {
        cout << arr[i] << " ";
    }
    cout << "\n";
}
 
void sort(int arr[], int check3)    // Сортировка пузырьковым методом 
{
    cout << "Сортируем массив: \n";
    int a, b, t,i;
    for (a = 1; a < check3; a++)
    {
        for (b = size - 1; b >= a;b--)
        {
            if (arr[b - 1] > arr[b])
            {
                t = arr[b - 1];
                arr[b - 1] = arr[b];
                arr[b] = t;
            }
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2020, 19:45
Ответы с готовыми решениями:

специфичная проверка на конец файла
Дело в чем. Я считываю с файла 2 размерности , 2 матрицы и вектор. Потом надо провести проверку...

Специфичная работа со звуком
Возникла такая задача: 1. Считывать звук со звуковой карты, с разных каналов одних и тех же...

Как работает время в программе, почему сортировка массива на 1000 элементов быстрее, чем сортировка массива на 8?
#include &lt;iostream&gt; #include &lt;chrono&gt; #include &lt;cmath&gt; #include &quot;List.h&quot; #include &lt;iomanip&gt;...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка)
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод...

4
7275 / 6220 / 2833
Регистрация: 14.04.2014
Сообщений: 26,871
07.05.2020, 20:03 2
А почему 99, если ты до 1000 вводишь?
0
0 / 0 / 0
Регистрация: 23.04.2019
Сообщений: 14
07.05.2020, 20:16  [ТС] 3
Тем более, создавать 1000 счетчиков для каждого числа, даже через массив. Звучит безумно. Но в подсказке имеется в виду создать счетчик для каждого возможного значения массива из 100
0
7275 / 6220 / 2833
Регистрация: 14.04.2014
Сообщений: 26,871
07.05.2020, 20:27 4
Если рекомендуют 99 счётчиков, то предполагается диапазон 1..99?
0
0 / 0 / 0
Регистрация: 23.04.2019
Сообщений: 14
07.05.2020, 20:31  [ТС] 5
Нет, в массиве может быть всего 100 значений, но они варьируются от 0 до 1000
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2020, 20:31
Помогаю со студенческими работами здесь

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным...

Сортировка Шелла по убыванию, сортировка массива с файла
В задании нужно чтобы массив был взят из файла или сгенерирован, и упорядочен по возрастанию и...

Сортировка массива и сортировка строка матрицы
1) Создание массива А с помощью рандома с целыми от -100 до 100 и вывести его на экран....

Одномерные массивы. Вставка, удаление элементов массива. Перестановка элементов массива. Сортировка массива методом пузырька
Помогите пожалуйста! Дан массив, состоящий из N букв латинского алфавита а) Заполнить массив...

Сортировка массива по сумме цифр элементов массива в порядке возрастания(неубывания)
Мне нужно написать программу, которая будет сортировать заданный массив по сумме цифр его элементов...

Сортировка массива, вывести значения массива после каждого прохода цикла
Всем привет. Помогите, пожалуйста. Нужно отсортировать массив и вывести значения массива после...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru