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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿秋 中级黑马   /  2015-7-21 19:55  /  668 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*数组*/
/*静态初始化*/
        int[] arr=new int[]{1,3,6,8,10};//数据明确时,直接把数组列出来
        int[] arr={1,2,,5,7,12};
        int[] arr=new int[5];                        //对于数值不明确的,可以用这种分别进行赋值。
        arr[1]=20;
        arr[3]=32;
        arr[4]=33;
/*数组元素的默认初始化值为0*/
        int[] arr=new int[5];
        System.out.println(arr[1]);//值为0
/*二维数组*/
        int[][] arr=new int[3][4]        //表示的是二维数组中有3个一维数组,每个一维数组内有4个元素。一维数组的默认初始化值为null,元素默认初始化值为0
        System.out.println(arr.length)//打印的是二维数组的长度
        System.out.println(arr[].length)//打印的是第一个一维数组的长度
对传统型二维数组赋值的方法:
        arr[0][0]=12;//给第一个一维数组当中的第一个数赋值为12;
        int[][] arr={{},{},{},{}}//二维数组的要求是,每个一维数组中的元素的长度都相同
/*数组的遍历*/
class Q1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{3,2,1,45,234,521};
                printArray(arr);
        }
        public static void printArray(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length ;x++ )
                {
                        if(x!=arr.length-1)
                        System.out.print(arr[x]+",");
                        else
                        System.out.print(arr[x]+"]");
                }
        }
}
/*获取数组最值*/
class Q1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{344,12,54,66,3,21,2};
                getMin(arr);
        }
        public static void getMin(int[] arr)
        {
                for (int x=0;x<arr.length ;x++ )
                {
                        if(arr[0]>arr[x])
                        {
                                arr[0]=arr[x];
                        }
                }
                System.out.println("数组中的最小值是:"+arr[0]);                //获取数组最小值
        }
}
class Q1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{2,12,54,66,3,21,344};
                getMax(arr);
        }
        public static void getMax(int[] arr)
        {
                for (int x=0;x<arr.length ;x++ )
                {
                        if(arr[0]<arr[x])
                        {
                                arr[0]=arr[x];
                        }       
                }
                System.out.println("数值中的最大值是:"+arr[0]);        //获取数组最大值
        }
}
/*数组排序*/
/*数组的选择排序*/
class Q1                                                                                                       
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,22,34,12,3,76,356};
                maxPrint(arr);
                System.out.print("数组从大到小的排列是:");
                printArray(arr);
                System.out.println();
                minPrint(arr);
                System.out.print("数组从小到大的排列是:");
                printArray(arr);
        }
        public static void minPrint(int[] arr)
        {
                int temp;
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        for (int y=x+1;y<arr.length ;y++ )
                        {
                                if(arr[x]>arr[y])
                                {
                                        temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;
                                }
                        }
                }
        }
        public static void maxPrint(int[] arr)
        {
                int temp;
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        for (int y=x+1;y<arr.length ;y++ )
                        {
                                if(arr[x]<arr[y])
                                {
                                        temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;
                                }
                        }
                }
        }
        public static void printArray(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length ;x++ )
                {
                        if(x!=arr.length-1)
                        System.out.print(arr[x]+",");
                        else
                        System.out.print(arr[x]+"]");
                }
        }
}
/*数组的冒泡排序*/
class Q1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,22,34,12,3,76,356};
                maoPao(arr);
                System.out.print("数组从小到大的排列是:");
                printArray(arr);
        }
        public static void maoPao(int[] arr)
        {
                for (int y=0;y<arr.length ;y++ )
                {
                        for (int x=0;x<arr.length-y-1 ;x++ )                //目的就是减少需要比较的元素               
                        {
                                int temp;
                                if(arr[x]>arr[x+1])
                                {
                                        swap(arr,x,x+1);
                                }
                        }
                       
                }
        }
        public static void printArray(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length ;x++ )
                {
                        if(x!=arr.length-1)
                        System.out.print(arr[x]+",");
                        else
                        System.out.print(arr[x]+"]");
                }
        }
        public static void swap(int[] arr,int x,int y)     //数值置换功能
        {
                int temp=arr[x];
                arr[x]=arr[y];
                arr[y]=temp;
        }
}
/*查找一个元素在数组中的位置*/
class Q1                                                                                                       
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,22,34,12,3,76,356};
                int k=getSearch(arr,34);
                System.out.println(k);
        }
        public static int getSearch(int[] arr,int x)                //用return的方法可以有效规避打印语句的繁琐
        {       
                for (int y=0;y<arr.length ;y++ )
                {
                        if(arr[y]==x)
                        {
                                return y;
                        }
                }
                return -1;
        }
}
/*折半查找*/
class Q1                                                                                                       
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,22,34,12,3,76,356};
                minPrint(arr);
                //printArray(arr);
                int index=zheBan(arr,54);
                System.out.println("角标是:"+index);
        }
        /*public static int zheBan(int[] arr,int key)
        {
                int min=0,max=arr.length-1,mid=(min+max)/2;
                while(key!=arr[mid])                                                //是以中心数值为比较对象
                {
                        if(key>arr[mid])
                        {
                                min=mid+1;
                        }
                        else if(key<arr[mid])
                        {
                                max=mid-1;
                        }
                        if(min>max)
                        {
                                return -1;       
                        }
                        mid=(min+max)/2;
                }
                return mid;
        }*/
        //折半查找法二
        public static int zheBan(int[] arr,int key)
        {
                int min=0,max=arr.length-1,mid=(min+max)>>1;
                while(arr[min]<=arr[max])                                //法二是以整体成立为变量
                {
                        if(key>arr[mid])
                        {
                                min=mid+1;
                        }
                        else if(key<arr[mid])
                        {
                                max=mid-1;
                        }
                        else
                                return mid;
                        mid=(min+max)>>1;                                        //起着循环的作用
                }
                return -1;
        }
        public static void minPrint(int[] arr)
        {
                int temp;
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        for (int y=x+1;y<arr.length ;y++ )
                        {
                                if(arr[x]>arr[y])
                                {
                                        temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;
                                }
                        }
                }
        }
        public static void printArray(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length ;x++ )
                {
                        if(x!=arr.length-1)
                        System.out.print(arr[x]+",");
                        else
                        System.out.print(arr[x]+"]");
                }
        }
}
/*有一个有序的数组,向其中加入一个数,使其加入了也是有序的*/
class Q1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,22,34,43,44,56,111};
                int a=getSearch(arr,24);
                System.out.println("该数值应插入在角标为"+a+"和角标为"+(a+1)+"之间");
        }
        public static int getSearch(int[] arr,int x)
        {
                int y=0;
                for (;y<arr.length-1 ;y++ )
                {
                        if ((x<arr[y+1])&&(x>arr[y]))
                        {
                                return y;
                        }
                }
                return y;
        }
}
/*二维数组面试题*/
一维数组的表达方式:int[] arr,int arr两种表达方式
二维数组的表达方式:int[][] arr,int arr[][],int [] arr[]三种表达方式
int[] x,y[]                //拆开来看就是int[] x;int[] y[];


1 个回复

倒序浏览
赞一个哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马