dabocaiqq
2020-05-24 10:17
采纳率: 66.6%
浏览 159

Java语言高分悬赏:怎么判断一个数组本身是否是有序的,如果是增序输出1,逆序输出0,无序输出-1

Java语言高分悬赏:怎么判断一个数组本身是否是有序的,如果是增序输出1,逆序输出0,无序输出-1

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 毕小宝 2020-06-03 18:51
    已采纳

    遍历一遍,如果 a[i]< a[i+1] 就说明是有序的,一旦碰到不满足条件的,循环终止得出结论无序。

    已采纳该答案
    打赏 评论
  • QC_chen 2020-05-24 10:34

    1、确定你排序的逻辑
    2、循环比较相邻两个数,一次循环即可

    打赏 评论
  • yin_jia_521 2020-05-24 11:21

    这个判断还需要考虑全部相等的情况。我觉得可以设计,递增输出1,递减输出-1,全部相等输出0,无序输出空。
    首先,通过首尾2个值来,假设该数组是递增、递减还是全部相同。
    然后做一次循环看一下比对相邻的2个值,如果循环结果符合第一次的假设,就输出假设的内容;如果结果不同需要区分这2个值是不是相同,如果相同则跳出本次循环进行下一次,如果不同,就直接结束循环输出无序。

    打赏 评论
  • qybao 2020-05-24 12:31

    相邻元素挨个比较,用个布尔值记录更新每次的比较结果,最后判断布尔值就可以了,比如
    //这里数组元素全相等算升序,如果全相等算无序,则把循环的布尔计算改成大于或小于

    public class Sample {
        public static void main(String[] args) {
            int [][]data = {
                new int[] {1,2,3},
                new int[] {3,2,1},
                new int[] {1,3,2}
            };
            for (int i=0; i<data.length; i++) {
                System.out.printf("%s:%d\n", Arrays.toString(data[i]), isSorted(data[i]));
            }
        }
    
        public static int isSorted(int[] arr) {
            boolean asc = true, dsc = true;
            for (int i=0; i<arr.length-1; i++) {//相邻数组元素挨个比较
    
                asc = asc && (arr[i] <= arr[i+1]); //如果相同不算升序,则把小于等于改成小于
                dsc = dsc && (arr[i] >= arr[i+1]);
            }
            return asc ? 1 : (dsc ? 0 : -1);
        }
    }
    
    打赏 评论

相关推荐 更多相似问题