黑马程序员技术交流社区

标题: 小福利:数组求“最大,最小,最值”详细注释! [打印本页]

作者: 迷茫不堪的年纪    时间: 2015-9-28 21:04
标题: 小福利:数组求“最大,最小,最值”详细注释!
我们随便定义一个求最大值哈{1,2,3,4,5,6} 求数组中最大值  方法一:取值的是数组里的元素                                 // int[]arr={1,2,3,4,5,6}     1(元素)的角标是0(角标从0开始)   
class ArrayDemo                                                                                                       arr[0]=1 : 就是0的角标是元素1 哦。
      {
          public static int geyMax(int[]arr)    //首先确定数组类型,很明显是整数类型。所以选int ,同时明确目标就是求最大值哈,所以我们搞个变量getMax(函数)
        {
                int max =arr[0] ;   //定位变量,因为我们需要一个个挨个比大小,所以我们先定义个变量,随便取数组里的元素就好
               for (x=1;x<arr.length;x++) //遍历一次数组哦。  arr.length  是数组长度
            {
                 if(int[x]>max) //该准备的东西都准备好了, 包括我们定义了变量,现在我们要做的就是,我们本身的max 也就是arr[0] 和数组里别的元素比较
                max = arr[x] ;  //如果被比的数比我们这个大,那么变量就储存那个大的!如  max= 1   和元素里的 2比了, max:    1<2,那么现在max =2 咯><
             }
               return max ;
                    }              //函数搞完了, 我们把他调用一下, 证明可以运行哈
            
             public static void main(String[]args)   //主函数哈
           {
                int[]arr={1,2,3,4,5,6}   //arr数组里的元素
                int max = getMax(arr)    //意思就是调用上面的东西,偷懒方式,复用性,比较方便使用   就是说求max 就等于上面的结果  ,如果没有错是的话 “6”
              {
                   System.out.printlm("max="+max)   //输出语句。
                   }
        }
}


{1,2,3,4,5,6} 求数组中最大值 的方法二 :取值的是数组里的角标     *-*-是与上面的不同点
class ArrayDemo_2

    {
         public static int geyMax_2(int[]arr)    //首先确定数组类型,很明显是整数类型。所以选int ,同时明确目标就是求最大值哈,所以我们搞个变量getMax(函数)
        {
                int max =0 ;   //定位变量,因为我们需要一个个挨个比大小,所以我们先定义个变量,但因为是0 ,虽然没有错误,但是他代表的是“角标”哦!*-*
               for (x=1;x<arr.length;x++) //遍历一次数组哦。  arr.length  是数组长度
            {
                 if(int[x]>arr[max]) //和上面不同的是,因为我们定义的是角标,所以在这里千万要记得和比较的也是角标哦!及是 arr[max]    *-*
                max = arr[x] ;  //如果被比的数比我们这个大,那么变量就储存那个大的!如  max= 1   和元素里的 2比了, max:    1<2,那么现在max =2 咯><
             }
               return arr[max] ; //记得是arr[max]哦!就是反馈角标值!    *-*
                    }              //函数搞完了, 我们把他调用一下, 证明可以运行哈



              public static void main(String[]args)   //主函数
           {
                int[]arr={1,2,3,4,5,6}   //arr数组里的元素
                int max = getMax_2(arr)    //意思就是调用上面的东西,偷懒方式,复用性,比较方便使用   就是说求max 就等于上面的结果  ,如果没有错是的话 “6”
              {
                   System.out.printlm("max="+max)   //输出语句。
                   }
        }
}


{1,2,3,4,5,6} 求数组中最小值      不同点  *-*标示哈
class ArrayDemo                                                                                                
      {
          public static int geyMin(int[]arr)    //首先确定数组类型,很明显是整数类型。所以选int ,同时明确目标就是求最“小”值哈,所以我们搞个变量getMin(函数)
        {
                int min =arr[0] ;   //定位变量,因为我们需要一个个挨个比大小,所以我们先定义个变量,随便取数组里的元素就好
               for (x=1;x<arr.length;x++) //遍历一次数组哦。  arr.length  是数组长度
            {
                 if(int[x]<min) //*-*小于 该准备的东西都准备好了, 包括我们定义了变量,现在我们要做的就是,我们本身的max 也就是arr[0] 和数组里别的元素比较
                min = arr[x] ;  //如果被比的数比我们这个大,那么变量就储存那个大的!如  max= 1   和元素里的 2比了, max:    1<2,那么现在max =2 咯><
             }
               return min ;
                    }              //函数搞完了, 我们把他调用一下, 证明可以运行哈
            
             public static void main(String[]args)   //主函数哈
           {
                int[]arr={1,2,3,4,5,6}   //arr数组里的元素
                int min = getMin(arr)    //意思就是调用上面的东西,偷懒方式,复用性,比较方便使用   就是说求max 就等于上面的结果  ,如果没有错是的话 “6”
              {
                   System.out.printlm("min="+min)   //输出语句。
                   }
        }
}

第二种方法也是角标的,这里就不在重复打印了。
/*
在以上这些中 ,我们用到了 for 循环的遍历(for x=1(初始化值);x,arr.length(作用域,作用范围);x++(自增)一个for循环的基本构成) if语句  if(条件表达式)-输出语句  还有数组的基本认知,和定义,这里其实普通的数组arr[]={....} 后面还有二维数组哦arr[][]  .忘了忘了, 还有 函数哈,
*/


   求最值的概念基本不会有太多变化,有可能出现的变数大多在类型上,因为类型毕竟不少嘛,但是int 类型还是较多的。
   这个最值我看了一次视频,一次笔记,却在脑子里过了5-10次。
   感觉,做编程是的先有思路,然后在根据思路去用代码实现,但是同时我们思考不通的时候也可以,也可以从代码中判断一个人的思路,然后在去捋一捋。你或许就没那么迷惑了。
   
   亲们,等待下次俺把选择排序,冒泡排序吃透了,在给大家继续福利哈。


作者: 迷茫不堪的年纪    时间: 2015-9-28 21:06
俺是不是沙发?
作者: asdsy222    时间: 2015-9-28 21:07
你是沙发。。。恭喜恭喜
作者: Pro47x    时间: 2015-9-28 21:08
学习了,谢谢楼主
作者: 313098819    时间: 2015-9-28 21:12
赞一个!
作者: 迷茫不堪的年纪    时间: 2015-9-28 21:27
俺的帖子 ,难道沉了啊
作者: 月影千华    时间: 2015-9-28 21:30
谢谢 学习啦
作者: Meitan    时间: 2015-10-9 19:20
敲了很久吧,说的很详细,谢谢楼主
作者: 迷茫不堪的年纪    时间: 2015-10-9 20:51
Meitan 发表于 2015-10-9 19:20
敲了很久吧,说的很详细,谢谢楼主

是敲了挺长时间,其实最主要的还是脑子里因为一开始没弄清楚,所以一直在连过。
作者: 霹雳三口组    时间: 2015-10-9 20:58
前几天刚学习插入选择和冒泡排序,这几天感觉又有点陌生了
作者: 迷茫不堪的年纪    时间: 2015-10-9 21:46
霹雳三口组 发表于 2015-10-9 20:58
前几天刚学习插入选择和冒泡排序,这几天感觉又有点陌生了

其实理解了,最大最小的求值,再去看排序更容易点,
作者: yaoyeqing    时间: 2015-10-9 21:51
看了之后确实没有那么迷糊了
作者: leaf168    时间: 2015-10-9 21:56
太强大了!!1
作者: 如梦丶似幻    时间: 2015-10-9 23:18
前来学习~~~~
作者: 迷茫不堪的年纪    时间: 2015-10-9 23:20
如梦丶似幻 发表于 2015-10-9 23:18
前来学习~~~~

还不休息啊 这么晚了
作者: 小穿钉    时间: 2015-10-10 08:10
注视非常详细,受教了,明白了很多自己没注意到的地方
作者: 15001162522    时间: 2015-10-10 10:29
楼主,以后发帖可以插入代码~~看着好看
作者: 迷茫不堪的年纪    时间: 2015-10-10 11:52
上次插入代码成乱码了。-   -!
作者: 三川草民    时间: 2015-10-10 11:52
内容很详实
作者: tianweidong    时间: 2015-10-11 10:45
角标的部分表示没看懂
作者: 迷茫不堪的年纪    时间: 2015-10-11 18:38
tianweidong 发表于 2015-10-11 10:45
角标的部分表示没看懂

我帮你理解下吧,  我们一般 取  max=arr[x]  他代表的是数组里的元素  max=x  是元素所在的角标位,但是在后面的if 中 我们还是需要( arr[x] >arr[max])    max=arr[x]
作者: sandwicher    时间: 2015-10-11 19:59
不错,,,顶一下
作者: tianweidong    时间: 2015-10-12 09:25
不是应该换角标么,这样不就和前面一样了么?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2