6-2 判断一个数列是否已排好序
作者 殷伟凤
单位 浙江传媒学院
编写如下所示的一个方法,判断一个数列是否已排序,如果已按升序排列则返回true。
public static boolean isSorted(int[] list)
主测试程序输入一组数据,然后输出该数列是否已排序或未排好序。
注意:输入的第一个数为该数列的元素个数。
函数接口定义:
ipublic static boolean isSorted(int[] list)
list为输入的一组数据
裁判测试程序样例:
import java.util.Scanner;
public class Main { public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] list = new int[20];
list[0] = input.nextInt();
for (int i=1; i<= list[0]; i++) list[i] = input.nextInt();
if (isSorted(list))
System.out.println("The list is already sorted"); else System.out.println("The list is not sorted"); } /* 请在这里填写答案 */ }
输入样例1:
8 10 1 5 16 61 9 11 1
输出样例1:
The list is not sorted
输入样例2:
10 1 1 3 4 4 5 7 9 11 21
输出样例2:
The list is already sorted
自己写的如下
public static boolean isSorted(int[] list) {
for(int i=1;i<list[0]-1;i++) {
if(list[i]>list[i+1]){
return false;
}
}
return true;
}
测试两个用例均正确但是 提交之后test2 总是不能通过
同学写的:
public static boolean isSorted(int[] list) {
for(int i=1;i<list[0]-1;i++) {
for(int j=i+1;j<=list[0];j++){
if(list[i]>list[j]){
return false;
}
}
}
return true;
}
把i+1用j替换掉了
但是我还是不太理解为什么这样操作可以解决test2的测试
是考虑时有什么遗漏吗
感觉跟Java的储存方式有关系;