Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
#1

"Быстрая" сортировка двумерного массива - C++

28.04.2010, 14:59. Просмотров 3607. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста!!!
Нужно реализовать "быструю" сортировку для двумерного массива.
Не ругайте, я пока что новичок, для одномерного могу сделать, а для двумерного нет...

Добавлено через 33 минуты
есть у кого какие мысли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2010, 14:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос "Быстрая" сортировка двумерного массива (C++):

Сортировка двумерного массива методом вставок с "конфеткой" - C++
Доброго времени суток. Помогите разобраться со следующим заданием (в форуме С мне не помогли): Необходимо отсортировать двумерный...

Быстрая сортировка двумерного массива - C++
Помогите разобраться с быстрой сортировкой! Для одномерного массива всё понятно, но как сортировать двумерный массив не понимаю. Если б мне...

Быстрая сортировка двумерного массива - C++
Нужно отсортировать двумерный массив по убыванию быстрой сортировкой. Вроде всё работает, но не сортирует. В чём может быть дело? ...

Быстрая сортировка двумерного массива - C++
Здравствуйте. У меня есть задание по сортировкам. Нужно заданный двумерный массив из рандомных чисел отсортировать по возрастанию по...

Быстрая сортировка двумерного массива - C++
Возникла проблема с програмой в которой применяется быстрая сортировка двумерного массива. При попытке скомпилировать выдает ошибку: ...

"Быстрая" сортировка с итерационным циклом вычисления медианы - C++
Написать программу на С++: "Быстрая" сортировка с итерационным циклом вычисления медианы. Для заданного интервала массива, в котором...

3
Genius Ignat
1241 / 779 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
28.04.2010, 15:31 #2
1. Перегоняешь в простой массив, сортируешь, потом перегоняешь обратно в матрицу..
2. Если используешь матрицу на стеке: до есть не динамическую,
можно просто сделать следующую махинацию:
C++
1
2
3
4
5
int *p =(int*)matrix;  //указатель p можешь передать  в функцию qsort.
/*Это представление матрицы массивом...
С динамическими матрицами это не прокатывает,
поэтому использовать надо пункт 1.
*/
0
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
28.04.2010, 16:08  [ТС] #3
что то я не совсем понимаю.
если мы делаем "быструю" сортировку для одномерного массива, то код примерно такой:
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
#include <iostream>
using namespace std;
 
template<class T> 
void quickSortR(T* a, long N) 
{
    long i = 0, j = N;            
    T temp, p;                    
    p = a[ N>>1 ];
    do {
        while ( a[i] < p ) i++;
        while ( a[j] > p ) j--;
        if (i <= j) 
        {
            temp = a[i]; a[i] = a[j]; a[j] = temp;
            i++; j--;
        }
    } 
    while ( i<=j );
    if ( j > 0 ) quickSortR(a, j);
    if ( N > i ) quickSortR(a+i, N-i);
}
 
int main()
{
    setlocale(0, "Rus");
    int a[] = { 2, 5, 1, 19, 8};
    quickSortR(a, 4);
    for(int i = 0; i < 5; i ++)
        cout << a[i] << " ";
    cout << endl;
    return 0;
}
как я понял, по вашему первому пункту, в этом коде в начале должен быть ещё некий код с двумерным массивом, а в конце переход обратно. а как это реализовать, я к сожаленью не знаю

Добавлено через 21 минуту
помогите пожалуйста кто-нибудь, завтра сдавать!
0
easybudda
Модератор
Эксперт CЭксперт С++
10020 / 5943 / 1004
Регистрация: 25.07.2009
Сообщений: 11,230
28.04.2010, 18:46 #4
NikITKA123, за решение задачи наверное не пройдёт, но в принципе матрицу сортирует...
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
#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
#include <cassert>
 
int main(){
    const int ROWS = 3;
    const int COLS = 4;
    int matrix[ROWS][COLS] = {
        { 6, 1, 8, 0 },
        { 3, 2, 9, 7 },
        { 4, 1, 8, 5 }
    };
 
    std::cout << "Unsorted matrix:" << std::endl;
    for ( int i = 0; i < ROWS; ++i ){
        std::copy(matrix[i], matrix[i] + COLS, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
 
    std::multiset<int> ms;
    for ( int i = 0; i < ROWS; ++i )
        for ( int j = 0; j < COLS; ++j )
            ms.insert(matrix[i][j]);
    assert ( ms.size() == ROWS * COLS );
    for ( int i = 0; i < ROWS; ++i ){
        for ( int j = 0; j < COLS; ++j ){
            matrix[i][j] = *ms.begin();
            ms.erase(ms.begin());
        }
    }
 
    std::cout << "Sorted matrix:" << std::endl;
    for ( int i = 0; i < ROWS; ++i ){
        std::copy(matrix[i], matrix[i] + COLS, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
 
    return 0;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2010, 18:46
Привет! Вот еще темы с ответами:

Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" - C++
Всем доброго суток времени прошу помогите найти ошибку при компиляции ошибок нет, при запуску всплывает ошибка. работа. в Visual studio...

Быстрая сортировка: ошибка "Stack overflow" - C++
Не понмаю, пишет STACK OVERFLOUDED!!!! не знаю в чем проблема. #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; using...

Не работает быстрая сортировка для двумерного массива - C++
Здравствуйте, возникла проблема, не работает быстрая сортировка по возрастанию абсолютных величин для двумерного массива. Работает только,...

"быстрая" сортировка (вызов функции) - C++
Здраствуйте, :drink: по лабе надо сделать много сортировок.. все сделано кроме метода &quot;быстрой&quot; сортировки.. ...


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

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

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