5.1、数组与排序

1、java中的数组是引用类型的,即数组分数组元素和数组变量,数组元素存储数组的首地
址,存放在栈(steak)中;数组元素存储数组的数据,存放在堆(heap)中。

2、基本数据类型的变量存放在栈中,数据存放堆中;创建对象存放在动态内存区,以便反 复使用,当运行时数据区就是堆内存,堆内存的数据不会随着方法结束而立即销毁,除 非在没有其他对象调用,才会被GC回收。
正确做法应该在使用完变量后给他赋值NULL,使其被回收。

3、一维数组的元素可以是基本类型,也可以是引用类型。
声明:int []a;
初始化:a = new int [100];

赋值:1)、**int []a={1,2,3,4};(常用简写)**
2)、int [] a=new int[]{1,2,3,4};

4、一维数组常用的方法和技巧
a)foreach循环:for(Type variable:collection){
}
例如:定义了数组int a[];
for(int i:a){
}
之后就可以在循环体内用i代替a内数组元素了,但是只可读,不可写

b) a.length是数组的一个属性,可以产生数组长度,而在String中,length()是方法

c) arraySort()方法是快排,利用这个方法之前需要导入java.util.*;包

d) arraycopy()方法是用来拷贝数组的,有5个参数(from、fromIndex、to、toindex、 count) 拷贝源数组,拷贝源起点,拷贝目标数组,拷贝目标起点,个数。(也需 要导入java.util.arrays包)

e) copyof()方法有两个参数:一个是源复制数组,另一个是长度。
例: public static int[] copyOf(int []original,int nowLength);
数组长的话补0

5、二分查找方法(折半查找法)
a)手动二分查找;
设置三个变量:low,high,mid.
控制结束的标志是low<=high或找到目标值
代码如下:

/**
 * Created by zxchello on 2017/11/3.
 */
import java.util.Arrays;
public class array2 {
    static int ArraySearch(int key,int []a){
        Arrays.sort(a);
        int hi=a.length-1;
        int low=0;
        while(low<=hi){
            int mid=(low+hi)/2;
            if(key<a[mid]){
                hi=mid-1;
            }else if(key>a[mid]){
                low=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int []a={1,4,2,7,8,9,11,6,44,23};
        int res=ArraySearch(2,a);
       for(int i:a){
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.print(res);
    }
}

手动查询时如果查找 不到可以自己设置最终返回值

b)、利用二分方法自动查询
导入java.util.arrays包,调用arrays.binarySearch方法 ,传入数组,返回查找到的结 果索引值,

注意:使用二分法要先进行排序。
优点:比较次数少,查找速度快,平均性能好。
缺点:要求待查表为有序表,且插入删除困难。
适用于不经常变动而查找频繁的有序列表。
方法最后没找到查找内容的话,返回-(low+1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值