Добрый день, уважаемые жители сайта JavaRush.
В настоящий момент я нахожусь в начале своего обучение языка программирования Java и прохожу первый курс JavaSyntaxPro, в дополнение к курсу и книге "Изучаем Java" пытаюсь разбираться с материалом используя онлайн компилятор, придумывая сам себе задачки.
И я наткнулся на интересный момент, когда пытался понять массивы и их сортировку.
Хотел бы спросить мнение профессионалов имеет ли способ который я для себя обнаружил, право на существование и можно ли им пользоваться?
Касательно способа когда искал информацию в интернете по сортировке двумерного массива, интернет выдавал реализацию сортировки сложнее на мой начинающий взгляд, нежели чем тот который я для себя открыл.
К письму прикрепил скриншоты кода реализации сортировки двумерного и трёхмерного массива (сортируется каждая строка от большего к меньшему) используя Arrays.sort(). Скажите является ли данная реализация рабочей?
для двумерного массива:
для трёхмерного массива:
Заранее спасибо за Ваш профессиональный взгляд и ответ.
Anton Muravyev
32 уровень
Сортировка двухмерных и трёхмерных массивов используя Arrays.sort()
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
15 августа 2023, 08:51
> Скажите является ли данная реализация рабочей?
Зависит от того, что ты пытаешься сделать. Тебя устраивает полученный результат?
Arrays.sort() это просто один из вариантов отсортировать массив значений в естественном порядке. То что сделал ты, это применил его на каждом имеющемся массиве посредством цикла for.
Естественно всё тоже самое можно было сделать руками, без библиотечных методов. Существует оху*лиард алгоритмов сортировки разной степени сложности, производительности и области применения. В качестве ознакомления рекомендую почитать про них и постараться реализовать руками. Банальные сортировки пузырьком, вставкой, слиянием, быстрая сортировка тебе понадобятся как минимум на собеседовании.
+1
Anton Muravyev
15 августа 2023, 11:12
Добрый день, Денис.
Спасибо за Ваш ответ.
Да, потому меня и интересовало, т.к. перечисленные Вами сортировки различаются по скорости обработки, а ещё объёмностью написания, то в данном случае, при использовании сортировки посредством Arrays.sort(), код написания получается не громоздким, а т.к. в Arrays.sort() реализован самый быстрый метод сортировки, то должен быть ещё и быстрым.
При поиске информации в интернете по сортировки массивов выдаются не простые для понимания "с пол оборота" решения, а данный способ выглядит элегантно. Потому и хотел узнать у Вас профессионала об адекватности метода, что возможно может закрасться ошибка при таком подходе, но как я понимаю сейчас данная реализация имеет право на существование.
Касательно устраивает ли полученный результат, с одной стороны да, что сортировка произошла, довольно понятным и не трудным способом, но с другой стороны сортировка произошла только в строках, а если понадобиться сортировка с перемещением ячеек между строками массива, то нужно осваивать более детальный подход (но это уже другая история).
С уважением, Антон.
0
Денис Enterprise Java Developer
15 августа 2023, 11:29
На практике ты и будешь в 99% случаев пользоваться уже готовыми сортировками, именно потому что это тема не для "понимания с пол оборота", серьезные специалисты занимаются разработкой и поиском оптимальных алгоритмов, не в последнюю очередь с использованием математических методов, например сортировка Шелла.
Но ты все равно должен понимать что именно происходит под капотом, хотя бы для прохождения собеса, вопросы по quick sort входят в любой опросник.
Так что как бы странно сейчас это ни звучало - лучше пиши велосипеды пока. Хреновые, медленные, но рабочие. Со временем начнёшь понимать почему одни велосипеды лучше других и где именно. А потом просто начнёшь пользоваться нормальными решениями.
Если же тебе нужны кастомные сортировки, как ты сказал - между массивами например, то это потребует и кастомного же решения. В прочем, язык предоставляет для этого массу инструментов, твоя задача, как программиста, знать об их существовании и грамотно ими пользоваться для достижения желаемого результата.
+1
Anton Muravyev
15 августа 2023, 11:44
Денис,
Спасибо за Ваш ответ, да буду потихоньку осваивать эти весьма пугающие "велосипеды".
Приношу извинения, что не поставил разделительные пробелы, между абзацами, сейчас увидел свой текст, понял что он трудно читаем без разделения.
Отдельная благодарность, что уделили время но мой вопрос.
С уважением, Антон.
p.s. предыдущий текст отредактировал, внёс разделители.
0