Форум программистов, компьютерный форум CyberForum.ru

Сортировка матрицы - C++

Восстановить пароль Регистрация
 
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
02.10.2012, 21:42     Сортировка матрицы #1
Товарищи, подскажите пожалуйста, как можно решить это задание?

(8 б.) В начале каждой строки частично заполненной матрицы А(m,n) сгруппированы элементы, упорядоченные но возрастанию. В массиве К(m) указано количество элементов в каждой строке. Слить все строки матрицы А в одномерный неубывающий массив B.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 21:42     Сортировка матрицы
Посмотрите здесь:

Сортировка матрицы C++
Сортировка матрицы C++
C++ Сортировка матрицы
сортировка матрицы C++
C++ Сортировка матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.10.2012, 21:53     Сортировка матрицы #2
сортировка слиянием, только для нескольких массивов.
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
02.10.2012, 22:58  [ТС]     Сортировка матрицы #3
Да, тут три массива-A, B и K.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.10.2012, 09:11     Сортировка матрицы #4
Цитата Сообщение от nikolas982 Посмотреть сообщение
Да, тут три массива-A, B и K.
ничего сложного. Заводите еще один массив K1[m], все элементы которого изначально равны 0. Каждое значение K1[i] - индекс еще необработанного элемента массива a[][] в строке i. Сам массив B[] должен быть размером m*n, или если хотите не тратить лишнюю память, то размер можно взять как сумму элементов массива K[]. Переменная n_B (сколько уже элементов в массиве B[]) изначально равна 0.
И можно сделать так (один из вариантов):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while(true)
{
    bool fl=true;
    int i_min=-1;
    for(int i=0; i<m; i++)
        if(K1[i]<K[i])
        {
            if(i_min==-1)
                i_min=i;
            else
                if(a[i_min][K1[i_min]]>a[i][K1[i]])
                    i_min=i;
            fl=false;           
        }   
    if(fl)
        break;
    B[n_B++]=a[i_min][K1[i_min];
    K1[i_min]++;
}
// здесь у Вас уже заполнен массив B[] c 0-го индекса по n_B-1 включительно.
nikolas982
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 49
03.10.2012, 09:54  [ТС]     Сортировка матрицы #5
Спасибо большое, разобрался!)
Yandex
Объявления
03.10.2012, 09:54     Сортировка матрицы
Ответ Создать тему
Опции темы

Текущее время: 10:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru