美文网首页
Java:Arrays类

Java:Arrays类

作者: iOS_修心 | 来源:发表于2023-05-15 23:28 被阅读0次

    java.util.Arrays

    一.创建

    dataType[] arrayRefVar = new dataType[arraySize];
    dataType[] arrayRefVar = {value0, value1, ..., valuek};

         double[] myList = {1.9, 2.9, 3.4, 3.5};
    
          //输出数组名及元素
           System.out.println(myList);
           System.out.println(myList[0]);
    
         // 打印所有数组元素
         for (double element: myList) {
            System.out.println(element);
         }
    

    二:常用方法

    方法名 说明
    public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
    public static void sort(int[] a) 按照数字顺序排列指定的数组
    public static int binarySearch(int[] a, int key) 利用二分查找返回指定元素的索引

    三:Throwable

    • 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题ArrayIndexOutOfBoundsException
    • 空指针异常:对象不再指向堆内存,还想继续访问数据,访问失败NullPointerException

    四:常用算法

    1.二分查找

    分查找也叫折半查找,每次可以去掉一半的查找范围,从而提高查找的效率。但有一个前提条件,数组内的元素一定要按照大小顺序排列,如果没有大小顺序,是不能使用二分查找法的

    public class MyBinarySearchDemo {
        public static void main(String[] args) {
            int [] arr = {1,2,3,4,5,6,7,8,9,10};
            int number = 11;
    
            //1,我现在要干嘛? --- 二分查找
            //2.我干这件事情需要什么? --- 数组 元素
            //3,我干完了,要不要把结果返回调用者 --- 把索引返回给调用者
            int index = binarySearchForIndex(arr,number);
            System.out.println(index);
        }
    
        private static int binarySearchForIndex(int[] arr, int number) {
            //1,定义查找的范围
            int min = 0;
            int max = arr.length - 1;
            //2.循环查找 min <= max
            while(min <= max){
                //3.计算出中间位置 mid
                int mid = (min + max) >> 1;
                //mid指向的元素 > number
                if(arr[mid] > number){
                    //表示要查找的元素在左边.
                    max = mid -1;
                }else if(arr[mid] < number){
                    //mid指向的元素 < number
                    //表示要查找的元素在右边.
                    min = mid + 1;
                }else{
                    //mid指向的元素 == number
                    return mid;
                }
            }
            //如果min大于了max就表示元素不存在,返回-1.
            return -1;
        }
      
    }
    
    2.冒泡排序

    一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序。果有n个数据进行排序,总共需要比较n-1次

    public class MyBubbleSortDemo2 {
        public static void main(String[] args) {
            int[] arr = {3, 5, 2, 1, 4};
            //1 2 3 4 5
            bubbleSort(arr);
        }
    
        private static void bubbleSort(int[] arr) {
            //外层循环控制的是次数 比数组的长度少一次.
            for (int i = 0; i < arr.length -1; i++) {
                //内存循环就是实际循环比较的
                //-1 是为了让数组不要越界
                //-i 每一轮结束之后,我们就会少比一个数字.
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] > arr[j + 1]) {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
    
            printArr(arr);
        }
    
        private static void printArr(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
      
    }
    

    相关文章

      网友评论

          本文标题:Java:Arrays类

          本文链接:https://www.haomeiwen.com/subject/dzkjsdtx.html