A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
给定一个数组{4,5,3,2,1,6}
需求:获取元素中的最大值与最小值;
       
        思路:
                1:要获取元素中的最大值,可以通过遍历的方式.
                2:获取最值需要比较,每一次比较都会有一个较大的值,因为该值不确定,
                用一个变量临时存储.
                3:让数组所有的元素都和该值比较,如果大于该变量的值,就用该变量记录较大的值.
                4:当所有的元素比较完成,那么该变量存储的就是最大的值了.
        步骤:
                1:定义变量,初始化数组中的任何一个元素即可.
                2:通过循环语句对数组进行遍历.
                3:在变量过程中定义判断语句,如果遍历到的元素比变量中的元素大,那么就赋值给该变量.
                需要定义一个功能,以便提高复用性.
                1'明确结果:数组中最大的元素,int.
                2,未知内容:一个int[].
*/                       
class HanShu_Test {
        public static void main(String[] args) {
               
                int[] arr ={4,5,3,2,1,6};
                bubbleSort(arr);
                //selectSort(arr);
                printArray(arr);
                //int min = getMin(arr);
                //int max = getMax_2(arr);
                        //System.out.println("max="+max);
                        //System.out.println("min="+min);
        }

        public static int getMax(int[] arr) {//传入一个int[] arr的数组.
                int max = arr[0];//定义一个变量.
                for(int x =1; x<arr.length; x++) {
                        if(arr[x]>max)
                                max = arr[x];
                               
                }
                        return max;
        }
        /*
        获取最值的另一种方式,是不是可以把临时变量初始化为0呢?
        可以,这种方式其实是在初始化数组中的角标.
        */
        public static int getMax_2(int[] arr) {
       
                int max = 0;//初始化数组中的角标
                for (int x =1; x<arr.length; x++) {
                        if(arr[x]>arr[max])
                                max = x;
                }
                        return arr[max];
        }
        //获取最小值
        public static int getMin(int[] arr) {
       
                int min = 0;
                for (int x =1 ;x<arr.length; x++){
                        if(arr[x]<arr[min])
                                min = x;
                }
                                return arr[min];
        }
       
        //选择排序
        public static void selectSort(int[] arr) {
       
                for (int x =0; x<arr.length-1; x++) {
                        for (int y = x+1; y<arr.length;y++ ) {
                                if(arr[x]>arr[y]) {
                                        /*int temp = arr[x];//定义一个变量进行元素换位置操作
                                        arr[x] = arr[y];
                                        arr[y] = temp;*/
                                        swap(arr,x,y);
                                }

                        }
                }
       
        }
        //冒泡排序
        public static void bubbleSort(int[] arr) {
               
                for (int x =0;x<arr.length-1 ; x++) {
                        for (int y = 0; y<arr.length-x-1; y++) {//-x:让每一次比较的元素减少,-1:避免角标越界.
                                if (arr[y]>arr[y+1]) {
                                        /*int temp = arr[y];
                                        arr[y] = arr[y+1];
                                        arr[y+1] = temp;*/
                                        swap (arr,y,y+1);
                                }
                        }
                }
       
        }
        /*
        发现无论什么排序都需要对满足条件的元素进行位置的置换.
        所以可以把这部分相同的部分提取出来,单独分装一个功能.
       
        */
        public static void swap(int[] arr,int a,int b) {
       
                int temp = arr[a];
                arr[a] = arr[b];
                arr[b] = temp;
        }
       
        public static void printArray(int[] arr) {//定义一个功能打印数组中的元素.

                System.out.print("[");//给数组加上一对[]
                for (int x =0;x<arr.length ; x++) {
                        if (x!=arr.length-1) //定义一个if语句如果x不等于数组中的最后一个元素那么就执行下面的输出语句.
                                System.out.print(arr[x]+", ");
                        else
                                System.out.println(arr[x]+"]");

                       
                }
       
       
        }
}


2 个回复

正序浏览
把类名改为FunctionTest或FunctionDemo就好了~
回复 使用道具 举报
            没有人吗?   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马