编写此函数的更好方法是什么?

时间:2015-04-02 18:37:51

标签: java arrays function sorted

我必须通过一个数组并打印出它是否排序,如果它不是 - 打印出未排序的前两个元素(例如:6> 5)

所以我想知道用一个函数来做这件事的最佳方法是什么:

  1. 创建一个void函数,打印出"它已排序"或者"它没有排序"如果不是,它也打印出两个元素。
  2. 创建一个boolean函数,打印出两个未排序的元素(如果有的话)并最终返回true或false。然后根据函数返回的内容,打印出数组是否在main
  3. 中排序
  4. 执行main中的所有内容,因为这可能不适合某个功能?
  5. 其他一些方式?
  6. 请注意,我并没有就我的作业本身提出任何帮助!

2 个答案:

答案 0 :(得分:2)

我会创建一个函数来返回最后一个排序单元格的索引,所以如果它是最后一个单元格,那么所有内容都会被排序,如果它小于你可以轻松找到下一个元素并在main中打印。 我不认为函数在出于其他目的时应该有副作用(比如print),而像这样的函数可以使用返回索引的函数:

private int getFirstSortedIndex(int[] numbers){
   int index = 0;
   //find and return the first sorted index;
   return index;
}

public static void main(String[] args){
   int[] numbers;
   //get the array from user input or arguments
   int index = getFirstSortedElement(numbers);
   if( index < numbers.length-1){
      //print numbers[index] and numbers[index+1]
   } else{
      //print "it's sorted"
   }
}

答案 1 :(得分:0)

我会创建一个方法来返回未正确排序的第一个元素的索引:

/**
 * @param array ordered array
 * @return the index of the first unordered element, or -1 if the array is ordered
 */
static int isOrdered(int[] array) {
    // iterate through the array
    //     if a two sequential elements are not ordered, return the index of the first element
    // if all is ok, return -1
}

然后做:

int unsortedIndex = isOrdered(array);
if (unsortedIndex != -1) {
    System.out.println(array[unsortedIndex] + ", " + array[unsortedIndex + 1]);
}

这比直接在isOrdered()中打印元素更好,因为现在您可以根据需要在代码的其他部分重复使用isOrdered()