//定义一个整型数组,求出数组最大值和最小值 并输出结果
    public static void minMax(){
        int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
        int minNum = 0; //最小值
        int maxNum = 0; //最大值
        for(int i = 0, j = 1; i < oldArr.length ; i ++ ){
            if(oldArr[i] > maxNum){
                maxNum = oldArr[i];
            }
            if(minNum == 0){
                if(oldArr[i] < oldArr[j]){
                    minNum = oldArr[i];
                }else{
                    j++;
                }
            }
        }
        System.out.println("最小:"+minNum+"最大:"+maxNum);
    }
不用任何类、函数,直接用最原始的写法。

解决方案 »

  1.   


    int minNum = oldArr[0];
    int maxNum = oldArr[0];
    for (int i = 1; i < oldArr.length; i++) {
      if (minNum > oldArr[i]) {
        minNum = oldArr[i];
      }
      if (maxNum > oldArr[i]) {
        maxNum = oldArr[i];
      }
    }
    第一,没看懂为何要j这个变量
    第二,BUG!假设数组是{-1,-2,-3},你可以试试看运行你原先的程序。总之,查找数组最大最小的时候,初始的min/max绝对不要设置成0,而是array[0]。
      

  2.   

    public static void main(String[] args) {
        int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
        int max = oldArr[0],min = oldArr[0];
        for(int i = 0;i < oldArr.length;i++ ){
    if(oldArr[i] > max)max = oldArr[i];
    if(oldArr[i] < min)min = oldArr[i];
        }
        System.out.println("最大值"+max);
        System.out.println("最小值"+min);
    }
    这应该是最简单的了!
      

  3.   

    排个序不就行了???    public static void minMax()
        {
            int oldArr[] = {1, 3, -1, 4, 5, 6, 9, 6, 6, 2, 5, 4, 7, 6, 7, 8, 5};
            Arrays.sort(oldArr);
            System.out.println(oldArr[0] + " " + oldArr[oldArr.length - 1]);
        }
      

  4.   

    对于一个时间复杂度为 O(n) 的算法。楼主为什么这么执着于他的优化?其实没必要。你的代码错了。给你写了个正确的。
    public static void minMax(int[] array) {
    int min = array[0];
    int max = array[0];
    for (int i = 1; i < array.length; i++) {
    if ( array[i] > max) {
    max = array[i];
    }
    if ( array[i] < min) {
    min = array[i];
    }
    }
    System.out.println("min: " + min + " max: " + max);
    }
      

  5.   

    一个数如果是最大数就肯定不是最小数,反之亦然
    所以第2个if可以写成else if,当这个数是最大数时,可以少做1次判断public static void minMax(int[] array) {
            int min = array[0];
            int max = array[0];
            for (int i = 1; i < array.length; i++) {
                if ( array[i] > max) {
                    max = array[i];
                }
                else if ( array[i] < min) {
                    min = array[i];
                }
            }
            System.out.println("min: " + min + " max: " + max);
        }
      

  6.   


    但是如果没有索引为0的key呢?我还不知道java里有没有象php一样的关联数组,so……