5.1、数组与排序
来源:互联网 发布:设计画册的软件 编辑:程序博客网 时间:2024/05/16 11:45
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);
- 5.1、数组与排序
- 数组排序与对象排序
- 数组与排序
- 数组初始化与排序
- 数组排序与查找
- 数组 :排序与搜索
- 数组排序与查找
- Java数组与排序
- C#数组查找与排序
- C#数组查找与排序
- php数组与排序:list
- C#数组查找与排序
- 数组_拷贝与排序
- 数组的排序与查找
- java数组复制与排序
- java数组与简单排序
- 2014.10.25数组与排序
- 数组与指针&冒泡排序
- cocos2d的工程创建
- 11.5_周总结
- Spring登录页面(用配置+注解方式)
- elasticSearch空间坐标的设置和查询
- 后缀表达式
- 5.1、数组与排序
- C++模板简介
- Python得关键术语
- 文件IO---标准输入、标准输出和标准错误
- 【设计模式】--SINGLETON模式
- 按照与输入顺序相反的顺序建立单链表
- Mysql性能调优
- 团队天梯赛L1-001.Hello World!
- 17.11.04日报