您的位置:首页 > 职场人生

黑马程序员--数组

2015-10-25 00:05 399 查看
首先是对一个数组来说,就是数组的定义,那么何为数组,用通俗的话来说就是可以存放数据的一个容器。但是从专业的术语来讲就是有限制了,数组:同一个类型的数据集合。那么我们为什么要用数组,因为数组中的元素好操作,数组中的元素从0开始编号。接下来就是要定义一个数组
数组有2种定义形式:1.元素类型[ ]  数组名 = new 元素类型(元素的个数或者数组的长度);
                             2.元素类型[ ]  数组名 = new 元素类型[ ]{元素,元素,...... };
可以用int 型 举一个例子:如下分别用两种形式来定义一个数组
1.  int[ ] arr = new int[ 3 ];
2.  int[ ] arr = new int[ ]{1,2,3,4,5};
     int[ ] arr = {1,2,3,4,5};

接下来就是对数组进行遍历,就是得出数组中的每个元素的值。

// 数组的遍历

class  Day3_9

{

        public static void main(String[] args) 

        {

                //int[] a = new int[]{1,2,4};

                int a[] = {1,2,4};

                

                for (int b = 0;b<3;b++ )

                {

                        System.out.println(a[b]);

                }

        }

}
这时候有一个小细节,就是数组在输出过程中,角标可能出现越界的状况,应该注意数组的第一个元素的角标是从0开始的,而不是1。因为上面的代码是第一次写,所以说元素比较少,但是在现实的项目中,可能会出现很多元素的情况,我们又不可能一一的去数元素的个数,所以面临循环的时候,我们可以把数组的长度写成arr.length。而不再去通过人来数。

因为数组的for循环我不想写在主函数中,所以我们把它封装成一个函数,为了下次更好的调用。

//数组的遍历 和 把最后一个数的,去掉  用length、来表示;

class Day4_1 

{

        public static void main(String[] args) 

        {

                int[] a ={1,4,55,4,7,4546};

                printArray(a);

        }

        public static void printArray(int[] arr)

        {

                for (int a = 0;a<arr.length ;a++ )

                {

                        if (a!=arr.length-1)

                                System.out.print(arr[a]+", ");

                        else

                                System.out.print(arr[a]);

                }

        }

}

OK, 那么问题来了 ,在实际操作中, 我们用数组的目的不是为了仅仅遍历其中的元素,而是要的到数组中的某个具体的元素,好比最大值,最小值之类的。那么我们就拿数组的最大值和最小值以及一次都求出来来做演示,因为代码都是自己手写的,所以有些不规范的地方大家见谅。因为个人比较闲麻烦,所以每次我都把要操作的定义成了一个函数。代码如下:

//算数组中的最大值和最小值

class Day4_2 

{

        public static void main(String[] args) 

        {

                int a[] = new int[]{1,5,6546,7,987,45};

                maxArray(a);

                minArray(a);

                stepOne(a);

        }

        public static void maxArray(int arr[])

        {        

                int max = arr[0];

                for (int a = 0;a<arr.length ;a++ )

                {

                        if(max < arr[a])

                                max = arr[a];

                }

                System.out.println("数组中的最大数是:"+max);

        }

        public static void minArray(int []arr)

        {

                int min = arr[0];

                for (int a = 0; a<arr.length;a++ )

                {

                        if (min>arr[a])

                                min =arr[a];

                }

                System.out.println("数组中的最小数是:"+min);

        }

        public static void stepOne(int arr[])

        {

                System.out.println("----------------------");

                int max = arr[0];

                int min = arr[0];

                for (int a = 0;a<arr.length ;a++ )

                {

                        if(max < arr[a])

                                max = arr[a];

                }

                System.out.println("数组中的最大数是:"+max);

                for (int a = 0; a<arr.length;a++ )

                {

                        if (min>arr[a])

                                min =arr[a];

                }

                System.out.println("数组中的最小数是:"+min);

        }

}

好了 , 求完了数组的最大值和最小值 ,那么问题来了 ,我想给数组中的元素排个序,我觉得不排序看着闹心,所以我们就要把数组给整理一下然后输出来,就拿最简单的顺序排序和冒泡来举个例子。(ps:对于这两个排序算法,我就不想一一解释了,以为大学里的数据结构和算法没有学好,所以大家要想知道这两个排序是怎么进行的,还是去看一下数据结构,以及栈内存和堆内存的介绍,反正排序的算法有好多。java的util包中也会给你,我好像说多了


先来顺序

//给数组进行排序 顺序排序

class  Day4_3

{

        public static void main(String[] args) 

        {

                int a[] = new int[]{1,2,45,4,1,556,46564,787,1,1,45,4,5,2,2,24};

                printArray(a);

                sortArray(a);

                printArray(a);

        }

        //排序:两个数比较 从以一个数开始 每一个都与后面的进行比较 与后面最小的的交换位置

        public static void sortArray(int[] arr)

        {

                for (int a = 0;a<arr.length ;a++ )//双重循环 就相当于每一次都进行一行的对比,先把一地个

                {

                        for (int b = a;b<arr.length ;b++ )

                        {

                                int temp;

                                if(arr[a]>arr[b])

                                {

                                        temp = arr[b];//定义一个临时变量 对两个值进行交换 

                                        arr[b] = arr[a];

                                        arr[a] = temp;

                                }

                        }

                }

        }

        public static void printArray(int[] arr)

        {

                for (int a = 0;a<arr.length ;a++ )

                {

                        if (a!=arr.length-1)

                                System.out.print(arr[a]+", ");

                        else

                                System.out.print(arr[a]);

                }

        }

}

再来个冒泡吧:

import java.util.*;//引用包的 形式

//冒泡排序 相邻两个元素进行比较

class Day4_4 

{

        public static void main(String[] args) 

        {

                int a[] = new int[]{45,46,7,578,9,1,245};

                //bubbleArray(a);

                //printArray(a);

                Arrays.sort(a);// 系统已经定义好了的固定语句,好坑啊。shit

                printArray(a);

        }

        public static void bubbleArray(int arr[])

        {

                for (int x = 0;x<arr.length-1 ;x++ )

                {

                        for (int y = 0;y<arr.length-x-1 ; y++)

                        {

                                if(arr[y]>arr[y+1])

                                {

                                        int temp;

                                        temp = arr[y];

                                        arr[y] = arr[y+1];

                                        arr[y+1] = temp;

                                }

                        }

                }

        }

        public static void printArray(int[] arr)

        {

                for (int a = 0;a<arr.length ;a++ )

                {

                        if (a!=arr.length-1)

                                System.out.print(arr[a]+", ");

                        else

                                System.out.print(arr[a]);

                }

        }

}

这里简要说明一下,java的自带util包中已经有可以直接进行排序的算法了,但是前面学习,还是中规中矩的来。

前面我们都是进行一维数组的演示,那么问题来了 ,我想操作二维数组,用通俗语言来讲,二维数组就是数组中的数组,好吧,首先是定义一个二维数组
1.int arr[ ][ ] = new int[ 元素的个数][元素的个数 ];
2.int arr[ ][ ] = new int[ ][ ]{{, , , },{ , },{,  , }.....};

既然定义了 我们就要遍历 同样的招式我就不演示了,直接求二维数组中所有元素的最小值,那么最大值也同理

// 定义一个二维int数组,编写代码获取最小元素。

class Test3

{

        public static void main(String[] args) 

        {

                int arr[][] = new int[][]{{5,8,89,7,6,-1},{
9827
40},{3,7,889},{45,7,3}};

                int min = arr[0][0];

                for (int x = 0;x<arr.length ;x++ )

                {

                        for (int y = 0;y<arr[x].length ; y++)

                        {

                                if(min > arr[x][y])

                                        min = arr[x][y]; 

                        }

                }

                System.out.println("用户定义的二维数组中的最小值是:"+min);

        }

}

好的,总之一句话来说(面向对象的话来说),数组就是更方便的对元素进行操作和整理,以及调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 黑马程序员