Правила[Одномерные массивы]50. В одномерном массиве переставить элементы так, чтобы сначала располагались отрицательные элементы, потом нулевые, а затем положительные. Относительное расположение элементов не изменять.
// а вот и одним циклом
public static int[] task50(int... arr)
{
int len = arr.length;
int[] res = new int[len];
for (int i = 0, n = 0, p = len - 1; i < len; i++)
{
if (arr[i] < 0)
{
res[n++] = arr[i];
}
if (arr[len - 1 - i] > 0)
{
res[p--] = arr[len - 1 - i];
}
}
return res;
}
Я что-то подобное тоже хотел сначала сделать, но потом посмотрел на фразу «В одномерном массиве переставить элементы ...» и решил сделать без создания дополнительного массива, поэтому получилось два цикла.
Не понял. Вы про циклы или про проходы?
Вообще-то циклов 2, а проходов меньше, чем array.length * array.length, т.к. с каждым проходом по первому циклу количество проходов по второму уменьшается на 1. В принципе, это модифицированный пузырьковый метод. Выше я объяснил, почему так сделал — не хотел использовать дополнительный массив, а переставлял элементы в массиве, как написано в задаче.
Как я понял, у нас небольшие непонятки в терминологии. Я считаю циклом программную конструкцию типа for, while (Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций). А Вы, как я понял циклом называете количество проходов или по другому итераций. Значит нас просто по-разному учили.
ладно, проехали
P.S. цикл это определенный набор проходов, пока не выполнится условие…
т.к. у вас вложенный цикл, я считаю что количество их, циклов, у вас равняется количеству проходов верхнего цикла+верхний цикл
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Вообще-то циклов 2, а проходов меньше, чем array.length * array.length, т.к. с каждым проходом по первому циклу количество проходов по второму уменьшается на 1. В принципе, это модифицированный пузырьковый метод. Выше я объяснил, почему так сделал — не хотел использовать дополнительный массив, а переставлял элементы в массиве, как написано в задаче.
в каждом проходе 1 цикла создается еще один цикл
ИТОГО: array.length+1 циклов))
дружище вас никто не осуждает)
P.S. цикл это определенный набор проходов, пока не выполнится условие…
т.к. у вас вложенный цикл, я считаю что количество их, циклов, у вас равняется количеству проходов верхнего цикла+верхний цикл