JavaRush /Java блог /Архив info.javarush /Кухня(); Задание N28.
terranum
28 уровень
Milan

Кухня(); Задание N28.

Статья из группы Архив info.javarush
Кухня(); Задание N28. - 1 Правила [Одномерные массивы] 28. Дана последовательность действительных чисел a1 ≤ a2 ≤ ... ≤ аn. Вставить действительное число b в нее так, чтобы последовательность осталась неубывающей.
Комментарии (14)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
RabenokDmitry Уровень 21
16 февраля 2015
public static int[] addValue(int[] array, int value) {
        int index = 0;
        // Бросаем исключение, если массив нулевой длины
        if (array.length == 0) {
            throw new IllegalArgumentException("Это не возрастающий массив!");
        }
        // Если значение больше последнго в массиве, то просто вставляем его в конец
        if (value > array[array.length - 1]) {
            array = Arrays.copyOf(array, array.length + 1);
            array[array.length - 1] = value;
            return array;
        }
        // Находим индекс, куда нужно вставить элемент!
        for (int i = 0; i < array.length; i++) {
            if (value >= array[i] && value < array[i + 1]) {
                index = i + 1;
                break;
            }
        }
        // Сдвигаем все вправо относительно index, куда затем вставляем значение
        array = Arrays.copyOf(array, array.length + 1);
        System.arraycopy(array, index, array, index + 1, array.length - 1 - index);
        array[index] = value;
        return array;
    }
terranum Уровень 28
31 августа 2014
Docktor91 Уровень 40
30 августа 2014
public static double[] insertIntoArrValue(double value,double... arr)
    {
        double[] res = new double[arr.length + 1];
        int added = 0;
        for (int i = 0; i < arr.length; i++)
        {
            if (added == 0 && value <= arr[i])
            {
                res[i] = value;
                added++;
            }
            res[i + added] = arr[i];
        }
        if (added == 0)
            res[res.length - 1] = value;
        return res;
    }
Sultan Уровень 16
30 августа 2014
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            double b = Double.parseDouble(String.valueOf(Math.random() * 10).substring(0, 4));
            double[] arr = generateDoubleArray();
            double[] res = kitchen28(arr, b);

            System.out.println("Test #" + (i + 1));
            System.out.print("arr = ");
            printlnArray(arr);
            System.out.println("b = " + b);
            System.out.print("res = ");
            printlnArray(res);
            System.out.println();
        }
    }

    public static double[] kitchen28(double[] arr, double b) {
        double[] res = new double[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] <= b) {
                res[i] = arr[i];
                if (i == arr.length - 1) {
                    res[i + 1] = b;
                }
            }
            else if (i == 0 || arr[i - 1] <= b) {
                res[i] = b;
                res[i + 1] = arr[i];
            }
            else {
                res[i + 1] = arr[i];
            }
        }
        return res;
    }

    public static double[] generateDoubleArray() {
        int n = (int) (Math.random() * 5) + 3;
        double[] arr = new double[n];
        for (int i = 0; i < n; i++) {
            arr[i] = Double.parseDouble(String.valueOf(Math.random() * 10).substring(0, 4));
        }
        Arrays.sort(arr);
        return arr;
    }

    public static void printlnArray(double[] arr) {
        System.out.print("{ " + arr[0]);
        for (int i = 1; i < arr.length; i++) {
            System.out.print(", " + arr[i]);
        }
        System.out.println(" }");
    }

}
Tan4ek Уровень 20
29 августа 2014
public static void func(double[] array, double b) {
    double[] newArray = new double[array.length + 1];
    int position = -1;

    for (int i = 0; i < array.length; i++)
        position = array[i] < b ? i + 1 : position;

    if (position == -1) {
        newArray[0] = b;
        System.arraycopy(array, 0, newArray, 1, array.length);
    } else {
        System.arraycopy(array, 0, newArray, 0, position);
        System.arraycopy(array, position, newArray, position + 1, array.length - position);
        newArray[position] = b;
    }

    array = newArray;
}