-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
|
||||||
1 | ||||||
Сортировка двумерного массива методом qsort15.08.2018, 14:10. Показов 6484. Ответов 10
Метки нет (Все метки)
0
|
15.08.2018, 14:10 | |
Ответы с готовыми решениями:
10
Сортировка двумерного массива методом выбора Сортировка двумерного массива методом пузырька Сортировка двумерного массива методом выбора Сортировка двумерного массива методом вставок |
15.08.2018, 14:41 | 2 | |||||
не так то, что ты пытаешься хранить совершенно разнородные данные в массиве.
не надо так. Как минимум для этого есть структуры. Добавлено через 9 минут кстати, насколько я знаю, поправьте если не так, Сишным Qsortom сортировать Си++ строки бесполено, он оператор = не вывзовет из С++, или я не прав? Добавлено через 5 минут
1
|
-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
|
|
15.08.2018, 14:49 [ТС] | 3 |
Kuzia domovenok, почему разнотипные данные в строках что нельзя целые числа хранить?
Добавлено через 2 минуты Kuzia domovenok, Спасибо большое) А что означает 3*sizeof(std::string) ?
0
|
15.08.2018, 15:47 | 4 |
аффтар, учи что к чему последовательно, а не тупо хватай по верхам.
Кусорт очень старая функция, которая работает на манипулировании укаателями. Для того, чтобы сортировать массивы любых типов до того как появились шаблоны, ей нужно знать указатель на начало массива, размер элемента и их число, чтобы иметь возможность выбирать элемент массива из нетипизированного указателя void*. Чтобы, например, выбрать iй элемент массива внутри функции, надо сместить указатель от начала на i*sizeof(размер элемента) байт И сразу говорю, все эти указатели это уже оффтопик, суть в том, что твой код - говно. Кусорт в коде для С++ и стд;;стринг лютое говно.
0
|
-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
|
|
15.08.2018, 17:20 [ТС] | 5 |
Kuzia domovenok, Спасибо что вы помогли в решении задачи и прояснили, хотя и грубовато, а код дал препод
Добавлено через 1 минуту Kuzia domovenok, Сказал просто переделать чтобы по первому столбцу сортировало а я не могла понять как работала эта фу-кция.
0
|
15.08.2018, 20:16 | 6 |
vfhbf, ну по сути вся переделка будет состоять в том, чтобы указать в функции сортировки трёхкратный размер элемента, чтобы она их выхватывала и обменивала пачками по 3,
а в функции сравнения размер элемента не менять, чтобы на проверку отправляла только по первому из каждой выбранной троицы.
1
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
16.08.2018, 10:56 | 7 |
vfhbf, Kuzia domovenok,
Сообщение от http://eel.is/c++draft/alg.c.library
0
|
16.08.2018, 14:53 | 8 |
rat0r, я в первом же сообщении написал, что не уверен но кажется нельзя сортировать классы. Но у меня не было аргументов против этого. Я думал, что кусорт не умеет в конструкторы, деструкторы и операторы=, однако, взявшись за этот код, я к великому удивлению обнаружил, что кусорт работает, поэтому свои претензии опустил. Я даже намерянно тестировал его со строками значительно разной длины, думая, что бе нормальных конструкторов копирования он уж точно переместит типа большую строку в меньшую и вызовет коррупцию кучи, но на удивления все мои тесты проходились..
0
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||||
16.08.2018, 15:29 | 9 | |||||
Из одного своего случая ты сделал вывод, что нет UB?
Оно и на коротких валится (так вот устроено short string optimization в libstdc++ (~gcc))
Код
*** Error in `./prog.exe': munmap_chunk(): invalid pointer: 0x0000000000604490 *** ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f45ab8887e5] /lib/x86_64-linux-gnu/libc.so.6(cfree+0x1a8)[0x7f45ab895698] ./prog.exe[0x402cf4] ./prog.exe[0x402b0f] ./prog.exe(_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm+0x44)[0x402976] ./prog.exe(_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv+0x36)[0x402794] ./prog.exe(_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev+0x18)[0x402662] ./prog.exe[0x4018a5] /lib/x86_64-linux-gnu/libc.so.6(+0x39ff8)[0x7f45ab84aff8] /lib/x86_64-linux-gnu/libc.so.6(+0x3a045)[0x7f45ab84b045] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf7)[0x7f45ab831837] ./prog.exe[0x401699] …
0
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
16.08.2018, 16:29 | 11 |
Сообщение было отмечено MrGluck как решение
Решение
И что отсюда следует?
http://eel.is/c++draft/alg.c.library#3
0
|
16.08.2018, 16:29 | |
16.08.2018, 16:29 | |
Помогаю со студенческими работами здесь
11
Сортировка двумерного массива методом вставок по строкам Сортировка двумерного массива Методом Шелла (по убыванию) Сортировка двумерного массива методом Выбора. Select sort Сортировка двумерного массива методом вставок с "конфеткой" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |