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

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

Статья из группы Архив info.javarush
Кухня(); Задание N50 - 1 Правила [Одномерные массивы] 50. В одномерном массиве переставить элементы так, чтобы сначала располагались отрицательные элементы, потом нулевые, а затем положительные. Относительное расположение элементов не изменять.
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Docktor91 Уровень 40
15 сентября 2014
//    а вот и одним циклом
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;
}
aiv Уровень 27
15 сентября 2014
Можно так:
/**
     * Решение задачи №50 в кухне
     * @param arr исходный массив. Значения в исходном массиве
     *            будут переставлены в сооветствии с заданием.
     */
    public static void changeArray (int[] arr){
        int tmp;

        for (int i = 0; i < arr.length; i++) {

            for (int j = 0; j < arr.length - i - 1; j++) {

                if (((arr[j] == 0) && (arr[j + 1] < 0))
                    || ((arr[j] > 0) && (arr[j + 1] <= 0))) {

                    tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                }
            }
        }
    }
shcho_isle Уровень 11
15 сентября 2014

public static int[] task50 (int[] arr){
    int lng = arr.length;
    int[] result = new int[lng];
    int count = 0;
    for (int i = 0; i < lng; i++) {
        if (arr[i] < 0) {
            result[count] = arr[i];
            count++;
        }
    }
    for (int j = 0; j < lng; j++) {
        if (arr[j] == 0) {
            result[count] = arr[j];
            count++;
        }
    }
    for (int k = 0; k < lng; k++) {
        if (arr[k] > 0) {
            result[count] = arr[k];
            count++;
        }
    }
    return result;
}