array, 0, array.length / 2
Объясните , как с этим работать.Второй раз сталкиваюсь , хочу понять и разобраться
kepler114
10 уровень
(array, 0, array.length / 2)
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
mentatge
20 марта, 12:18
Первый параметр это массив куда ты хочешь чтоб произошло заполнение, второй это место откуда начать заполнение, третий это докуда ты хочешь заполнить, в твоем случае мы заполнение массив array с 0 элемента до половины значения длины массива array
+3
Anonymous #3303140
20 марта, 12:18
Ты хоть напиши, в какой метод ты передаёшь эти параметры.
array.length - это величина, равная длине массива. Соответственно, array.length / 2 - величина, равная её половине. При этом при целочисленном делении остатки просто отбрасываются.
+1
Софья Backend Developer
20 марта, 12:18
Допустим дан массив array = {4,3,2,1}
Мы хотим его отсортировать и применяем:
Arrays.sort(array);
Но бывает, что хотим отсортировать например наполовину, а вторую половину оставить прежней.
Тогда границы будут от 0 до половины этого массива(array.length / 2). Тогда array будет {3,4,2,1}.
В общем:
(array, 0, array.length / 2) = (имя массива, левая граница, правая граница)
Вот. Если я правильно поняла вопрос😆
+1
kepler114
20 марта, 12:56
int firstPart = array.length % 2 == 0 ? array.length / 2 : array.length / 2 + 1;
длина массива четная ? четная(разбивает массив на 2 ) или (нечетная на два и прибовляет один)???
результ 1 = Arrays.copyOfRange(array, 0, firstPart);
переносит массив от 0 с firstPart?
результ 2 = Arrays.copyOfRange(array, firstPart, array.length)
?
Туплю ппц , по заданию надо поделить массив аррей и перенести в массив результ.
распишите пожайлуста действие понятным языком , я его выучу .
+1
zxc17
20 марта, 13:25
По условию задачи если количество элементов нечетное, то в первую часть надо записать большее количество элементов.
Таким образом, если количество четное, то граница разделения проходит по array.length / 2, а если нечетное, то array.length / 2 + 1. Тут надо помнить, что если делить целое на целое, то остаток от деления просто отбрасывается.
Пример:
Есть 5 элементов. Делим 5 на 2, получаем 2 целых, остаток отбрасывается. Прибавляем 1 , получаем границу firstPart=3. Дальше копируем: Здесь надо помнить, что в Java всегда действует такое правило: нижняя граница массива входит, верхняя нет. Т.е. команда
Arrays.copyOfRange(array, 0, 3) скопирует элементы с индексами 0,1,2. Команда
Arrays.copyOfRange(array, 3, 5) где 5 - общая длина исходного массива, скопирует элементы с индексами 3,4.
+3
Софья Backend Developer
20 марта, 15:49
if (array.length % 2 == 0) - Если целочисленное деление длины массива на 2 равно нулю, то длина массива - четное число.
Тогда по условию нам надо в первую часть массива занести допустим n1, а во вторую - n2. Это значит, что длину массива нам надо разделить пополам (array.length / 2). Этим мы узнаем до куда нам надо заносить n1.
Соответственно первая часть массива будет от 0 до array.length / 2, а вторая array.length / 2 до array.length.
Если же длина массива - нечетное число. То при делении длины массива на 2, останется остаток. Может быть в понимании будет легче как бы округлять этот остаток. И просто прибавлять единицу. (array.length / 2 + 1). То есть первая часть массива(более длинная) будет от 0 до array.length / 2 + 1.
Ну а firstPart это просто переменная, которая хранит значение array.length / 2.
+4
kepler114
21 марта, 11:05
cпасибо 🤝
0
kepler114
21 марта, 11:05
спасибо❤️
0