Сортировка двумерного массива, С++ |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Сортировка двумерного массива, С++ |
sheka |
11.09.2011 19:26
Сообщение
#1
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Нужно отсортировать двумерный массив по строкам насквозь.
Т.е. результат должен выглядеть так: 1 2 3 4 5 6 7 8 ЧЕМ это можно сделать? qsort не хочет. Думал, а вдруг кто-то адресной арифметикой баловался при его написании, хотя это вряд ли кто-то делал, ведь сортировка Хоара для этого не сильно подходит. |
TarasBer |
11.09.2011 19:40
Сообщение
#2
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
qsort должен работать
-------------------- |
IUnknown |
11.09.2011 19:57
Сообщение
#3
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата Нужно отсортировать двумерный массив по строкам насквозь. Как задан двумерный массив, можно уточнить? Статический? Или динамический?Вообще-то со статическим std::sort прекрасно справляется: const int n_cols = 5; |
sheka |
11.09.2011 19:58
Сообщение
#4
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Динамический.
Сообщение отредактировано: sheka - 11.09.2011 19:58 |
IUnknown |
11.09.2011 20:10
Сообщение
#5
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
В таком случае тебе надо писать сортировку самому, ни один стандартный метод не будет сортировать массив, который не расположен в одном куске памяти. А динамический массив (я имею в виду вот такой:
int **arr = new int*[n_rows];) как раз-таки и расположен черт знает как. Одна строка может быть здесь, другая - где-то в другом месте... |
TarasBer |
11.09.2011 20:14
Сообщение
#6
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> Динамический.
С этого бы и начал. Создавай динамический двумерный массив так, чтобы данные располагались последовательно. То есть выделяешь линейный участок Mem под x*y элементов, также для удобства выделяешь участок Lines под y указателей на элементы - в нём хранишь указатели на начала строк (Lines[j] = Mem[j*x]). К элементу (i,j) обращаешься как Lines[j,i]. Сообщение отредактировано: TarasBer - 11.09.2011 20:15 -------------------- |
sheka |
11.09.2011 21:15
Сообщение
#7
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата как раз-таки и расположен черт знает как. Одна строка может быть здесь, другая - где-то в другом месте Блин, я об этом и забыл подумать. |
Текстовая версия | 21.09.2024 18:21 |