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

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

Статья из группы Архив info.javarush
участников
Кухня(); Задание N23. - 1 Правила [Одномерные массивы] 23. Последовательность a1, a2, ..., аn состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
Комментарии (33)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
RabenokDmitry
Уровень 21
12 февраля 2015, 21:59
public static void sortOneZero(int[] array) {
        for (int value : array) {
            if ((value > 1) || (value < 0)) {
                throw new IllegalArgumentException("Неверный массив данных!");
            }
        }
        for (int i = 0; i < array.length; i++)
            if (array[i] == 1) {
                for (int j = array.length - 1; j > i; j--) {
                    if (array[j] == 0) {
                        array[j] = 1;
                        array[i] = 0;
                    }
                }
            }
    }
Sultan
Уровень 16
28 августа 2014, 00:08
Сядьте, сделайте глубокий вдох и:
public static String zerosToFront(String binaryString) {
    return new String(new char[binaryString.replace("1", "").length()]).replace('\0', '0')
            + new String(new char[binaryString.replace("0", "").length()]).replace('\0', '1');
}
dimaMJ
Уровень 25
28 августа 2014, 00:09
О_О
dimaMJ
Уровень 25
28 августа 2014, 00:12
Пожалуй я пойду спать ))
Sultan
Уровень 16
28 августа 2014, 00:16
Может чуть менее страшно будет выглядеть:
public static String zerosToFront(String s) {
    return new String(new char[s.replace("1", "").length()]).replace('\0', '0')
            + new String(new char[s.replace("0", "").length()]).replace('\0', '1');
}
Docktor91
Уровень 40
28 августа 2014, 00:20
Браво))
Sultan
Уровень 16
28 августа 2014, 00:23
не, ну никто здесь не подсказал, что надо не строку принимать. Димаверно написал: Arrays.sort(mas), но нужно подумать на счет скорости
Docktor91
Уровень 40
28 августа 2014, 00:27
я вот думал думал как со строкой сделать, так и не додумал, плюнул))
Airon
Уровень 34
11 сентября 2014, 22:18
А зачем в данном случае надо все так усложнять? Если можно было просто вот так:
public static String zerosToFront(String s) {
    return s.replace("1", "") + s.replace("0", "");
}
Vash_the_Stampede
Уровень 11
11 сентября 2014, 23:05
и то верно, как-то не догадался тогда
Sultan
Уровень 16
27 августа 2014, 23:46
Пока так:
public static String zerosToFront(String binaryString) {
    char[] temp = binaryString.toCharArray();
    Arrays.sort(temp);
    return new String(temp);
}

Печалька в том, что Arrays.sort() возвращает void, а не ссылку на сортируемый массив.
dimaMJ
Уровень 25
27 августа 2014, 23:56
или так )
public static int[] func(int[] mas)
    {
       Arrays.sort(mas);
        return mas;
    }
Sultan
Уровень 16
28 августа 2014, 00:07
ваааа, а я то подумал нужно как строку принимать, мда
Docktor91
Уровень 40
27 августа 2014, 23:41
public static int[] anyName(int... n)
{
    int[] res = new int[n.length];
    int count = 0;
    for (int i = 0; i < n.length; i++)
    {
        if (n[i] == 1)
        {
            res[n.length - 1 - count++] = 1;
        }
    }
    return res;
}
dimaMJ
Уровень 25
27 августа 2014, 23:22
Нет ну можно еще так )
public static int[] func(int[] mas)
    {
        for (int i =0;i<mas.length-1;i++)
        {
            for(int j=0;j<mas.length-i-1;j++)
            {
                if (mas[j]>mas[j+1])
                {
                    mas[j]+= mas[j+1];
                    mas[j+1]=mas[j]-mas[j+1];
                    mas[j]-=mas[j+1];
                }
            }
        }
        return mas;
    }
Sultan
Уровень 16
27 августа 2014, 23:26
этот код мне не нрава
dimaMJ
Уровень 25
27 августа 2014, 23:27
чем?
Sultan
Уровень 16
27 августа 2014, 23:43
большой, я мозг ломаю, как бы одним return решить
dimaMJ
Уровень 25
27 августа 2014, 23:48
я еще до этого не дорос )))
terranum
Уровень 28
27 августа 2014, 23:58
Норм код! Начинать надо именно с этого. Почитай что пишут Султан с Доком и через неделю будешь в пол строчки писать.:)
В одну строчку не всегда cool) Хотя все эти извращения skill качают)
dimaMJ
Уровень 25
28 августа 2014, 00:02
это верно подмечено ) нужно просто мозги надрессировать ))
dimaMJ
Уровень 25
27 августа 2014, 23:03
Arrays.sort(mas);

:D
terranum
Уровень 28
27 августа 2014, 23:04
Злодей)
Sultan
Уровень 16
27 августа 2014, 23:14
не, так не работает
Sultan
Уровень 16
28 августа 2014, 00:20
опять же, я подумал надо аргумент как строку принимать, моя ошибка
Sultan
Уровень 16
28 августа 2014, 00:22
это именно в самый раз, хотя по скорости может лучше как-то по другому, если вдруг массив большой
Sultan
Уровень 16
27 августа 2014, 22:59
я подумал, не успел, а как это, без читерства? Или что имеешь ввиду под читерством? Из сети брать или использовать нетривиальные способы решения?
terranum
Уровень 28
27 августа 2014, 23:06
Вот dimaMJ — явный читер.)
dimaMJ
Уровень 25
27 августа 2014, 23:07
ой да ладно)
Docktor91
Уровень 40
27 августа 2014, 23:08
читер-читер, не надо отпираться))
dimaMJ
Уровень 25
27 августа 2014, 23:12
=P
terranum
Уровень 28
27 августа 2014, 22:57
Или дайте дорогу молодежи)
terranum
Уровень 28
27 августа 2014, 22:55
Давайте только без читерства)