您现在的位置是:首页 > 诗句大全

【JavaSE】java刷题--数组练习

作者:纳雷武时间:2024-04-01 09:40:35分类:诗句大全

简介  文章浏览阅读676次,点赞48次,收藏37次。本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。上一篇讲解了一维数组和二维数组的基础知识~如有错误,欢迎指出~

点击全文阅读

前言

本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。

上一篇 数组 讲解了一维数组和二维数组的基础知识~

欢迎关注个人主页:逸狼

创造不易,可以点点赞吗~

如有错误,欢迎指出~

题1:实现toString的功能

将数组元素以字符串的形式输出在屏幕上

思路

首先要判断空指针和空数组的情况,利用字符串拼接实现toString功能

    //实现自己的数组转成字符串    public static String myToString(int[] array){        //判断空指针情况 (没有指向对象)        if(array==null){            return null;        }        //判断空数组情况  (指向的对象为空)        if(array.length==0){            return "[]";        }        String ret="[";        for (int i = 0; i < array.length; i++) {            ret=ret+array[i];            if(i!= array.length-1){                ret=ret+" ,";//字符串拼接            }        }        ret+="]";        return ret;    }

题2:查找数组中的元素

顺序查找

如果数组比较大,效率低

    public static int checkNum(int[]array,int key){        for (int i = 0; i < array.length; i++) {            if(array[i]==key){                return i;            }        }        return -1;    }

二分查找

效率高,前题是建立在当前数组是有序的

//二分查找      public static int zheBanFind(int[]array,int key){        int right=0;        int left= array.length-1;        while(right<=left){            //int mid=(right+left)/2;            //int mid=(left+(left-righ)/2);//防止越界            int mid=(right+left)>>>1;//右移一位,相当于除法            if(array[mid]<key){                right=mid+1;            }            if(array[mid]>key){                left=mid-1;            }            if(array[mid]==key){                return mid;            }        }        return -1;    }

题3:冒泡排序

    //java实现冒泡排序    public static void BubbleSort(int[]array){        boolean flag=true;        for (int i = 0; i < array.length-1; i++) {            //第一趟            for (int j = 0; j < array.length-1-i; j++) {//减i表示每一趟都比上一趟少一次                if(array[j]>array[j+1]){                    int tmp=array[j];                    array[j]=array[j+1];                    array[j+1]=tmp;                    flag=false;                }            }            if(flag==true){                break;            }        }    }

题4:数组的逆置

//数组的逆置    public static void reverse(int[]array){        int left=0;        int right= array.length-1;        while(left<right){            int tmp=array[left];            array[left]=array[right];            array[right]=tmp;            left++;            right--;        }    }

题5:数组的拷贝

将数组重新拷贝一份,当然java中自带了拷贝方法copyOf(既可以拷贝,又可以扩容)

    }    //数组的拷贝    public static int[] copy1(int[]array){        int[]tmp=new int[array.length];        for (int i = 0; i < array.length; i++) {            tmp[i]=array[i];        }        return tmp;    }    
public static void main(String[] args) {        int[]array={9,8,7,6,5,4,3,2};        //Java里自带的拷贝        /**         * 可以看作是扩容         */        int[] cp=Arrays.copyOf(array,array.length*2);        System.out.println(Arrays.toString(cp));        //数组填充  可以局部填充        int[] array4=new int[10];        Arrays.fill(array4,1,6,666);//在数组array4中的【1,6)的位置填充666        System.out.println(Arrays.toString(array4));    }

题6:奇前偶后

将数组中奇数放在前面,偶数放在后面

    public static void fun3(int[] array) {        int left = 0;        int right = array.length - 1;        while (left < right) {            while (left < right && array[left] % 2 != 0) {//left<right防止越界                //奇数                left++;            }            while (left < right && array[right] % 2 == 0) {//left<right防止越界                //偶数                right--;            }            int tmp = array[left];            array[left] = array[right];            array[right] = tmp;        }    }    public static void main(String[] args){            int[] array = {1, 2, 3, 5, 6, 7};            fun3(array);            System.out.println(Arrays.toString(array));        }

题7:找加数

  在数组{2,7,11,15}中找两个数相加的值为13,返回【2,11】

      public static int[]fun4(int[]array,int target){        int[]ret={-1,-1};//没找到就直接返回-1        for (int i = 0; i < array.length; i++) {            for (int j = 0; j < array.length; j++) {                if(array[i]+array[j]==target){                    ret[0]=array[i];                    ret[1]=array[j];                }            }        }        return ret;    }    public static void main(String[] args) {        int[]array={2,7,11,15};        int[]ret=fun4(array,4);        System.out.println(Arrays.toString(ret));    }

题8:判断是否有连续三个奇数

判断一个数组中是否存在连续3个奇数

        public static boolean fun8(int[]array){        int count=0;        for (int i = 0; i < array.length; i++) {            if(array[i]%2!=0){                count++;                if(count==3){                    return true;                }            }            else{                count=0;            }        }        return false;    }    public static void main(String[] args) {        int[]array={1,2,3,0,7,9,6};        System.out.println(fun8(array));    }

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句