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

Переобразование сортировки для двухмерного и трехмерного масива

27.04.2020, 23:55. Показов 259. Ответов 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
#include <stdio.h>
#include <stdlib.h>
int main() {
    int N = 8;
    int A[N];
    for (int i = 0; i <N; ++i) {
            A[i] = rand() % 10;
            printf(" %d ", A[i]);
    }
    int Elem, j;
    for(int i=1; i<N; i++){
        Elem=A[i];
        j=0;
        while (Elem>A[j]) j=j+1;
        for (int k=i-1; k>=j; k--)
            A[k+1]=A[k];
        A[j]=Elem;
    }
    printf("\n");
    for (int i = 0; i <N; ++i){
            printf(" %d ", A[i]);
        }
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2020, 23:55
Ответы с готовыми решениями:

Сортировка двухмерного масива
Отсортировать двухмерный масив целых чисел методом пузырьков. Заранее благодарна.

Алгоритм сортировки полигонов трёхмерного объекта
Нужно закрасить невыпуклый трёхмерный объект, состоящий из полигонов. Для этого определяю...

Найти шесть найменшых элементов масива, пользуясь функцией сортировки
найти шесть найменшых елементов масива пользуясь функцией сортировки елементов.

Найти среднее арифметическое для масива B и среднее геометрическое масива С
Помогите пожалуйста решить задачу: від'ємні елементи масиву А(10) записати в масив В, додатні...

1
57 / 47 / 14
Регистрация: 23.02.2016
Сообщений: 426
28.04.2020, 03:51 2
dedmon, ну вот у вас строка данных 3 6 7 5 3 5 6 2, вы написали для неё сортировку, теперь же у вас несколько таких строк, соответственно надо обернуть сортировку строки во внешний цикл по строкам, для трёхмерного ещё раз обернуть во внешний цикл по строкам строк и так далее вплоть до n-го массива. Суть в том, что на практике лично я не встречал даже трёхмерных. Лучше прогуглить название сортировки, которую написали, толку от этого будет больше. Сам код же трудночитаем. Использование различных циклов в одном месте обычно считается плохим тоном, но в данном случае мне кажется это вполне уместным. Под одинаковыми циклами понимается что-то вроде
C++
1
2
3
4
5
6
7
8
9
10
    for(int idxCur = 1; idxCur < N; idxCur++){
        elem = array[idxCur];
        /*Поиск элемента больше текущего до текущего*/
        int idxMax = 0;
        for(; elem > array[idxMax]; idxMax++) continue; // если не найден, то индексы равны
        /*Перебор от текущего элемента до найденного большего*/
        for (int k = idxCur - 1; k >= idxMax; k--)      // и условие цикла не выполняется
            array[k+1] = array[k];
        array[idxMax]=elem;
    }
Опять же с точки зрения читабельности кода, например этот кусок
C++
1
2
 int idxMax = 0;
for(; elem > array[idxMax]; idxMax++) continue;
можно вынести в какую-нибудь там функцию findIndexMaxElementToCurrentElement(int arr[], int size), но опять же если передавать двумерный то, чтобы работал подобный синтаксис, его размерность должна быть установлена глобально (т.е. вне мейна) если память не изменяет либо там уже с указателями возиться. Ну и самое главное и печальное, вызывать функции в цикле это очень затратная операция, я так дипломную работу можно сказать запорол. Поэтому вроде и читабельней с функцией будет, с другой стороны глупо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2020, 03:51
Помогаю со студенческими работами здесь

Найти шесть наименьших элементов масива, пользуясь функцией сортировки элементов
найти шесть найменшых елементов масива пользуясь функцией сортировки елементов.

Алгоритм "нестандартной" сортировки масива
Задачка вот в чем: Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1...

Заполнение масива по формуле и нахождение наименьшего положительного элемента масива
Итак условие задачи: Написать программу для заполнения масива з 20 элементов по формуле...

Найти номер макс. элемента масива и произведение элементов масива между 1-м и 2-м нулевыми элементами
В одномерном масиве,состоящем из н элементов,вычеслить номер макс. масива,и произведение элементов...

Перенос повторяющихся значений из двухмерного двухмерного массива в другой массив и запуск функции
Здравствуйте, форумчане! У меня есть двухмерный массив (string,string) В первом столбце хранятся...

Дано масив чисел. Найти количество элементов масива, которые расположены между max и min элементами масива
Помогите, пожалуйста, вычислить количество элементов между максимальным и минимальным элементами....


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

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

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