Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 17

Сортировка двумерного массива методом выбора

08.08.2017, 20:45. Показов 11441. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В книге С/С++ Павловская, метод выбора показан для одномерного массива таким способом:

C++
1
2
3
4
5
6
7
8
9
10
11
for (i = 0; i < n - 1; i++) {
        int min = i;
        for (j = i+1; j < n; j++)
            if (a[j] < a[min])
                min = j;
        
            int temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        
    }
Подскажите пожалуйста на примере, как отсортировать двумерный массив методом выбора т.к. ничего подходящего я для себя
в интернете на эту тему не нашел.(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2017, 20:45
Ответы с готовыми решениями:

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

Сортировка двумерного массива методом Выбора. Select sort
Задание: Упорядочить каждую строку матрицы по убыванию. Отсортировал пузырьком, а вот &quot;Выбором&quot; никак. Весь день убил на это....

Сортировка массива методом выбора
Доброго времени суток, форумчане! void sortar(int *a, int N) { int fl, i, j, temp = 0; do { fl = 1; for (i = 0; i &lt; N;...

6
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
09.08.2017, 10:02
по строкам или вообще все значения?
если все значения, то можно сделать из двумерного одномерный и сделать его сортировку, а потом обратно сделать двумерный

Добавлено через 12 минут
Цитата Сообщение от GeFacle Посмотреть сообщение
то можно сделать из двумерного одномерный и сделать его сортировку, а потом обратно сделать двумерный
вот такой код я сделал
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
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
void Sort(int* arr, size_t size)
{
    for (size_t i = 0; i < size - 1; i++)
    {
        for (size_t j = i + 1; j < size; j++)
        {
            if (arr[j] < arr[i])
            {
                swap(arr[i], arr[j]);
            }
        }
    }
}
 
void init(int** arr, size_t rows, size_t columns)
{
    for (size_t i = 0; i < rows; i++)
    {
        arr[i] = new int[columns];
    }
    for (size_t i = 0; i < rows; i++)
    {
        for (size_t j = 0; j < columns; j++)
        {
            arr[i][j] = rand() % 20 - 10;
        }
    }
}
 
void show(int** arr, size_t rows, size_t columns)
{
    cout << "Matrix:" << endl;
    for (size_t i = 0; i < rows; i++)
    {
        for (size_t j = 0; j < columns; j++)
        {
            cout << setw(3) << arr[i][j] << ' ';
        }
        cout << endl;
    }
}
 
void delmem(int** arr, size_t rows, size_t columns)
{
    for (size_t i = 0; i < rows; i++)
    {
        delete[] arr[i];
    }
    delete[] arr;
}
 
int main()
{
    setlocale(0, "");
    size_t n, m; cin >> n >> m;
    int** arr = new int*[n];
    init(arr, n, m);
    show(arr, n, m);
    int* temp = new int[n*m];
    size_t k = 0;
    for (size_t i = 0; i < n; i++)
    {
        for (size_t j = 0; j < m; j++)
        {
            temp[k] = arr[i][j];
            k++;
        }
    }
    Sort(temp, n*m);
    k = 0;
    for (size_t i = 0; i < n; i++)
    {
        for (size_t j = 0; j < m; j++)
        {
            arr[i][j] = temp[k];
            k++;
        }
    }
    delete[] temp;
    show(arr, n, m);
    delmem(arr, n, m);
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 17
09.08.2017, 12:18  [ТС]
Спасибо большое! Но, мне нужно отсортировать по строке)
0
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
09.08.2017, 13:08
ну тогда просто вот так
C++
1
2
3
4
5
6
7
8
9
10
11
    for (size_t i = 0; i < rows; i++)
    {
        for (size_t j = 0; j < columns - 1; j++)
        {
                    for (size_t k = j + 1; k < columns; k++)
                    {
                                if (arr[i][j] < arr[i][k] )
                                           swap(arr[i][j],arr[i][k]);
                    }
        }
    }
0
0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 17
09.08.2017, 13:29  [ТС]
Цитата Сообщение от GeFacle Посмотреть сообщение
ну тогда просто вот так
C++
1
2
3
4
5
6
7
8
9
10
11
    for (size_t i = 0; i < rows; i++)
    {
        for (size_t j = 0; j < columns - 1; j++)
        {
                    for (size_t k = j + 1; k < columns; k++)
                    {
                                if (arr[i][j] < arr[i][k] )
                                           swap(arr[i][j],arr[i][k]);
                    }
        }
    }
Это метод пузырька вроде или выбора? Суть же сортировки методом выбора в выявлении минимального элемента и перетаскиванием его (вроде бы на начало строки)?
0
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
09.08.2017, 16:12
Morphine2017, я сделал по твоему примеру, только без использования индекса и временной переменной, так что к тебе все вопросы
0
0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 17
09.08.2017, 17:36  [ТС]
Ладно, все равно спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2017, 17:36
Помогаю со студенческими работами здесь

Сортировка массива методом выбора
Помогите, пожалуйста!в сишке я не особо разбираюсь... вот задание: Отсортировать элементы массива по возрастанию методом выбора....

Сортировка массива методом выбора
Вот нужно применить сортировку массивов Сортировка выбором. Находим (выбираем) в массиве элемент с минимальным значением на интервале...

Сортировка массива методом выбора
Добрый вечер!!! В данном коде идет сортировка массива методом шелла Нужно переделать ее как сортировку методом выбора... Помогите...

Сортировка одномерного массива методом выбора
Сортировка одномерного массива методом выбора.для N=10,100, 1000,15000

Сортировка массива методом прямого выбора
Объясните пожалуйста как работает эта программа. Задание: Массив из 5 целых чисел заполнить с клавиатуры. Произвести сортировку...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru