zoukankan      html  css  js  c++  java
  • Arrays

    package com.Arrays;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class Study01 {
        /**
         * java.util 需要导入包 主要用来操作数组,排序和搜索
         * 
         * 没有构造方法,所有方法都是static修饰 方法: asList(T... a) 返回受数组支持的固定大小的List 查找(以byte为例子):
         * 注意:使用它查找有一个前提:查找的数组是有序的 binarySearch(byte[] a,byte key)
         * 在指定数组中查找指定的值,返回下标,使用的是二分查找 binarySearch(byte[] a,int fromIndex,int
         * toIndex,byte key) 在指定数组的指定下标区间中查找指定元素 复制 copyOf(byte[] a,int newLength)
         * 复制
         *     指定数组的元素得到新数组,新数组的长度是固定的,如果长度比就数组短,截取前部分,如果不够,使用默认值填充 copyOfRange(byte[]
         *     a,int from,int to) 将旧数组在指定下标范围内的元素作为新数组返回
         *     填充 
         *     fill(byte[] a,byte val)
         *         将val填充给a中的每一个元素 
         *     fill(byte[] a,int fromIndex,int toIndex,byte val)
         * 将val填充给a中的指定元素中 比较: equals()比较数组的值是否相等,重写了Object类的同名方法 表示: toString()
         * 返回类似[1, 2, 3...]形式的数组所有内容,重写了Object类的同名方法,注意是1.5版本开始 排序: sort(byte[])
         * 底层使用的而是快速排序算法
         * 
         */
        public static void main(String[] args) {
            Study01 sd=new Study01();
            sd.testCopyAndFill();
        }
        public void testAsList(){
            List l=Arrays.asList(1,2,3);
            for(int i=0;i<l.size();i++){
                System.out.print(l.get(i)+"	");
            }
        }
        public void testSortAndToString(){
            int[] ins = { 2, 34, 12, 54, 67, 230 };
            System.out.println(Arrays.toString(ins));
            Arrays.sort(ins);
            System.out.println(Arrays.toString(ins));
        }
        public void testBinary(){
            int[] ins = { 2, 34, 12, 54, 67, 230 };
            //二分查找需要是有序
            Arrays.sort(ins);
            System.out.println(Arrays.toString(ins));
            System.out.println(Arrays.binarySearch(ins, 34));
        }
        public void testCopyAndFill(){
            int[] ins = { 2, 34, 12, 54, 67, 230 };
            int[] ins1=Arrays.copyOf(ins, 4);
            System.out.println(Arrays.toString(ins1));
            ins1=Arrays.copyOf(ins, 6);
            System.out.println(Arrays.toString(ins1));
            Arrays.fill(ins1, 12);
            System.out.println(Arrays.toString(ins1));
            Arrays.fill(ins1, 2,4,30);
            System.out.println(Arrays.toString(ins1));
        }
    
        public int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {//二分查找的源码
            int low = fromIndex;
            int high = toIndex - 1;
    
            while (low <= high) {
                int mid = (low + high) >>> 1;//无符号左移1位,相当于/2
                int midVal = a[mid];
    
                if (midVal < key)
                    low = mid + 1;
                else if (midVal > key)
                    high = mid - 1;
                else
                    return mid; // key found
            }
            return -(low + 1); // key not found.
        }
    
    }
  • 相关阅读:
    网络流练习
    Noip2018 游记
    4719: [Noip2016]天天爱跑步
    1875: [SDOI2009]HH去散步
    P2619 [国家集训队2]Tree I
    1493: [NOI2007]项链工厂
    P1710 地铁涨价
    P3694 邦邦的大合唱站队
    P1439 【模板】最长公共子序列
    P1132 数字生成游戏
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5549318.html
Copyright © 2011-2022 走看看