рефакторинг моей функции сортировки массива - PullRequest
2 голосов
/ 19 декабря 2010

Итак, как сделать его более компактным?

   public static boolean isDirectOrder( int[] data )
   {
      boolean answer = true;

      if ( ( data != null ) && ( data.length > 1 ) )
      {
         int last = data[0];

         for (int i = 0; i < data.length; i++)
         {
            if ( last <= data[i] )
            {
               last = data[i];
            }
            else
            {
               answer = false;
               break;
            }
         }
      }

      return answer;
   }

Может быть, существуют стандартные инструменты для такой же проверки?

Ответы [ 5 ]

4 голосов
/ 19 декабря 2010
public static boolean isDirectOrder( int[] data )
{
    if (data != null)
        for (int i = 1; i < data.length; i++)
            if (data[i] < data[i - 1])
                return false;

    return true;
}
2 голосов
/ 19 декабря 2010
class A {
  public static boolean isDirectedOrder(int[] d) {
    if (d == null) return true;
    for (int i = 0, l = d.length - 1; i < l; i ++) if (d[i] > d[i + 1]) return false;
    return true;
  }

  public static void main(String[] args) {
    System.out.println(isDirectedOrder(new int[] { 1, 2, 3, 4, 5, 6, 8, 10 }));
    System.out.println(isDirectedOrder(new int[] { 1 }));
    System.out.println(isDirectedOrder(new int[] { 3, 2, 5, 1, 5, 7 }));
  }
}
2 голосов
/ 19 декабря 2010

Может быть что-то вроде этого (не проверено).

public static boolean isDirectOrder( int[] data )
{
    if ((data != null))
    {
       for (int i = 1; i < data.length; i++)
       {
           if (data[i] <= data[i - 1])
               return false;
       }
    }
    return true;
}
0 голосов
/ 19 декабря 2010

Немного логично возвращать истину, когда data == null.

public static boolean isDirectOrder( int[] data )
{
    if (data == null)
         throw new NullPointerException("Array is null");
    for (int i = 1; i < data.length; ++i)
        if (data[i] < data[i - 1]) // When this one is smaller than the previous one.
            return false;

    return true;
}

И, фактически, оператор data.length также выдаст исключение NullPointerException:

public static boolean isDirectOrder( int[] data )
{
    for (int i = 1; i < data.length; ++i)
        if (data[i] < data[i - 1])
            return false;

    return true;
}
0 голосов
/ 19 декабря 2010

Это выглядит довольно компактно для меня.Вы пытаетесь найти, если массив уже отсортирован.Вы можете снять скобки для некоторых операторов if:

if ( last <= data[i] )
{
last = data[i];
}

может стать

if ( last <= data[i] )
   last = data[i];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...