我想创建一个方法,如果数组未排序则返回0 如果按升序排序则返回1,如果按降序排序则返回-1
这是我到目前为止所做的:
public static int isSorted(int[] intArray) {
int end = intArray.length - 1;
int val = 0;
for (int i = 1; i < end; i++) {
if (intArray[0] < intArray[i]) {
val = 1;
}
else if (intArray[0] > intArray[i]) {
val = -1;
}
}
return v;
}
}
如果升序则返回1,如果降序则返回-1。 但是,如果我创建一个随机数组,它不会返回0。 问题是如何检查两个条件是否都失败,即 如果它根本没有排序。
答案 0 :(得分:1)
您的比较只是在第一个元素和数组中的其他元素之间。
val = 0;
for(int i=0;i<=end;i++){
for(int j=0;j<end;j++){
if(intArray[j]>intArray[j+1])
val = 1;
}
}
return val;
答案 1 :(得分:1)
您可以使用另外两个变量来计算:
public static int isSorted(int[] intArray) {
int end = intArray.length-1;
int counterAsc = 0;
int counterDesc = 0;
for (int i = 0; i < end; i++) {
if(intArray[i] < intArray[i+1]){
counterAsc++;
}
else if(intArray[i] > intArray[i+1]){
counterDesc++;
}
}
if(counterDesc == 0){
return 1;
}
else if(counterAsc == 0){
return -1;
}
else return 0;
}
答案 2 :(得分:1)
你去吧
public class stackoverflow {
public static int isSorted(int[] intArray) {
boolean sortedAsc = true;
boolean sortedDesc = true;
boolean sameValues=true;
int result = 0;
for (int i = 0; i < intArray.length-1; i++)
{
if (intArray[i] > intArray[i+1]) {
sortedAsc=false;
sameValues=false;
}
if (intArray[i] < intArray[i+1]) {
sortedDesc=false;
sameValues=false;
}
}
if(sortedAsc) result= 1;
if(sortedDesc) result = -1;
if(sameValues) result = 2;
return result;
}
public static void main(String[] args) {
// TODO code application logic here
int array[] = new int[4];
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
System.out.println(isSorted(array));
}