Просто интересно название
package com.javarush.task.task06.task0622;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
Числа по возрастанию
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int numbs[];
numbs = new int[5];
for(int i=0;i<5;i++)
numbs[i] = Integer.parseInt((reader.readLine()));
int numbs2[];
numbs2 = new int[5];
int count=0;
for(int i=0;i<5;i++){
for(int c=0;c<5;c++){
if(numbs[i]<=numbs[c])
count++;
}
for(int c=0;c<=5;c++)
{
if(count==c)
numbs2[Math.abs(c-5)] = numbs[i];
}
count=0;
}
for(int i=0;i<5;i++){
System.out.println(numbs2[i]);
}
}
}
Артем
13 уровень
Как называется такой метод сортировки?
Обсуждается
Комментарии (17)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
17 сентября 2019, 00:55
Лично мне ничего особо не напоминает, но если сильно хочется поискать, нужно гуглить "самые медленные алгоритмы сортировки".
Хотя задумка оригинальная, не встречалась подобная идея, если бы это был рабочий алгоритм да без квадратической сложности, было бы интересно )
А так в этом коде есть явная ошибочка.
0
Артем
17 сентября 2019, 18:23
Гуглил такой запрос, но не нашел, вот и решил спросить. А какая ошибка?
0
Артем
17 сентября 2019, 18:30
for(int c=0;c<=5;c++)
{
if(count==c)
numbs2[Math.abs(c-5)] = numbs[i];
}
этот цикл бесполезный если только
вот так нужно было
numbs2[Math.abs(count-5)] = numbs[i];
0
Justinian Judge в Mega City One Master
17 сентября 2019, 18:51
попробуй отсортировать массив 2, 2, 2, 2, 5 и посмотри на результат.
0
Артем
17 сентября 2019, 20:16
вот такой костыль)
0
Justinian Judge в Mega City One Master
17 сентября 2019, 20:40
уже лучше :)
Но код все так же не рабочий )
на первом тесте я ввел 2, 2, 2, 2, 2 прошло, окей. Но на втором мною придуманном таки поломалось )
0
Артем
18 сентября 2019, 13:10
Напиши плз при каких вводных данных не работает
0
Justinian Judge в Mega City One Master
18 сентября 2019, 13:27
окей, только ты сначала скажи сколько вариантов ты сам попробовал пытаясь поломать код/найти ошибку после моего последнего коммента?
0
Артем
18 сентября 2019, 14:07
Пробовал отрицательные, одинаковые, нули, вроде все работает. Конечно на числах не входящих в диапазон int не будет работать, но больше ничего придумать не смог)
0
Justinian Judge в Mega City One Master
18 сентября 2019, 14:21
у меня последняя редакция твоего кода поломалась на
Как у тебя такой вариант работает? 0
Артем
18 сентября 2019, 16:41
Как ты ломаешь мой алгоритм?)
Вот решение проблемы) 0
Justinian Judge в Mega City One Master
18 сентября 2019, 17:30
ну вроде рабочее, хотя в алгоритм не всматривался )
с нормальным форматированием выглядит вот так:
Но это out-of-place алгоритм, когда алгоритм создает еще одну структуру данных, которую использует в качестве ответа.
Но что на собесе, что так, в большинстве случаев под сортировкой не имеется ввиду копирование чего-то и потом копии в ряд выставить, а именно отсортировать исходный массив. Добавляется важная функция - swap , обмен(перестановка) значений, вокруг которой очень много чего строится в алгоритмах сортировки.
Такой вид алгоритма называется in-place, когда алгоритм работает с исходной структурой и модифицирует непосредственно ее.
Так что, чтобы закончить работу над твоим авторским алгоритмом нужно добавить перестановку элементов. То есть массив у нас один, и работаешь с одним исходным массивом, array, и никаких вспомогательных ) нашел куда вставить, значит нужно делать обмен.
Твой алгоритм на первый взгляд не шибко под это приспособлен, но..думаю это только на первый взгляд. Так что давай, маэстро, заканчивай свое творение :) Этим мне программирование и нравится, чувствуешь себя художником что ли, творческая работа :) 0
Артем
18 сентября 2019, 17:58
ну лови такой вариант ;)
+1
Justinian Judge в Mega City One Master
18 сентября 2019, 18:13полезный
нормалек вроде )
Надеюсь мне на собесе не дадут задание оценить сложность алгоритма или найти в нем ошибку )
Посмотри на мой вариант после легкого прочесывания твоего, логику не менял, просто подправил стиль.
Подумай что, на что я заменил, что добавил, почему, как это отобразилось на коде, его функциональности, читаемости и тд.
+1
Артем
18 сентября 2019, 18:23
Большое спасибо за разбор моего кода, было очень интересно. Я так понял это очень медленно будет работать? До сортировки пузырьком далеко?)
0
Justinian Judge в Mega City One Master
18 сентября 2019, 18:41
это где-то из той же лиги ) слишком много вложенных циклов.
Но то что сам написал это зачет.
Сортировки специфическая штука, на собесе могут спросить, хоть пару видов нужно уметь реализовать, да и разбирать их полезно, чтобы уметь читать код.
Но пока что погугли самые популярные алгоритмы сортировки, и запомни один-два, которые наиболее просто реализовать по памяти или с бумажкой. Хотя бы один ты должен уметь написать по памяти, и желательно чтобы он был чуть попроще чем этот )
Но это в свободное от основной учебы время, при изучении джава столько тем в которые можно углубиться, нужно балансировать как канатоходцу, чтобы не провалиться в пучины дополнительных тем, которых бесчисленное множество.
Акцент на джава раше и его задачах.
Вот например модернизированный пузырек, который я использовал в первом квесте. Да медленно, но это то, что я могу написать за полминуты никуда не смотря :) Держи у себя подобные алгоритмы. Пусть их будет немного, но они должны быть.
Хотя конечно лучше другие алгоритмы, но быстрые алгоритмы сортировок это рекурсии и цирк шапито с блекджеком и амиго.
0
Артем
18 сентября 2019, 18:57
Хорошо, еще раз спасибо!
+1