Подскажите, плз, что не так с моим алгоритмом. Сортировку по убыванию массива делаю. Хочу принципиально сделать самостоятельно, без reverseOrder и sort, ваяю уже битый час, но что-то работает не так. Сортировка это вообще больная тема для меня, разного рода сложные вроде бы для текущего уровня задачи про объекты, конструкторы щелкаю, а сортировка - просто голова ломается.
Вот пытаюсь сделать сортировку выбором (по убыванию, повторюсь):
for (int i = 0; i < array.length; i++) {
int max = array[i];
for (int j = i+1; j < array.length; j++) {
if (array[j]>=max) {
int swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}
}
Причем работает, когда введешь последовательность типа 1,2.3,4,5, преобразует нормально в 5,4,3,2,1, а вот когда беспорядочные цифры начинаешь вводить, да еще и с повторами, выходит какая-то ерунда.
aMozart23
8 уровень
Сортировка выбором. В чем ошибка?
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
VladimirMaster
17 октября 2019, 12:10
Всегда помни одну истину: если ты что-то задумал, то другой ее уже давно сделал. Читай книжки, блоги, гайды всякие. Не пытайся делать свой велосипед. Он уже давно сделан. Просто возьми и разбери этот велосипед и докопайся до сути, как он работает, но не делай свой.
+1
aMozart23
18 октября 2019, 04:30
Пытался реализовать без подглядки в тот пример, для лучшего усвоения принципа. Но, видимо, эффективнее было сразу посмотреть в готовый вариант и вникнуть именно в него. Спасибо за совет и что делишься опытом :)
0
Justinian Judge в Mega City One Master
18 октября 2019, 06:32
Структуры данных/алгоритмы учатся таким образом.
Сначала ты изучаешь минимальную теорию, есть допустим дерево, читаешь что это, разбираешься, можешь реализацию посмотреть, думаешь что к чему гуглишь.
Потом садишься и пишешь свое, стараясь никуда не заглядывать по мере возможностей. Ну одним глазом подсматриваешь, если структура сложная, тот же стек/очередь написать там только принцип нужно знать фактически, а вот авл деревья другой вопрос.
После того как написал сам, очень желательно чтобы ты сравнил с каким-то образцом и подумал что можно написать лучше, в первую очередь участки с костылями - когда ты писал как мог, а не как надо.
Потом еще раз повторяешь, и когда ты можешь сесть и никуда не заглядывая написать какую-то структуру, значит ты ее понимаешь.
То же самое по алгоритмам, принцип тот же, только с нюансом, что реализацию в принципе не обязательно и смотреть. Факультативно.
Сначала ты должен разобрать сам алгоритм теорию, и попробовать написать самому, как напишешь рабочий вариант. Тогда смотришь хорошие реализации этого алгоритма, желательно несколько штук, а то у каждого автора свои моменты могут быть, смотришь что тебе нравится, что не нравится, что лучше.
Потом еще раз пишешь, когда сможешь написать с головы, алгоритм ты знаешь.
Помнить все эти алгоритмы не обязательно, когда нужно - ты вспомнишь, в глубинах памяти останется. Но человек, который не пишет алгоритмы/структуры данных, хуже понимает и хуже читает чем те кто пишет. К тому же, это развивает алгоритмическое мышление.
Если у тебя есть возможность, желание и настроение и нет проблем с основным курсом джава раш, тогда это хорошее занятие - но это факультатив, поскольку объем материала слишком большой, и отсутствие знания алгоритма сортировки на собесе простят, но если ты не ответишь на простые вопросы по джава кору, это могут не простит.
+2
VladimirMaster
18 октября 2019, 07:21
В догонку видос. 😉 Свежачок. Видимо очень много вопросов по этому поводу.
0