Java(数组与算法)
2019-04-19 本文已影响0人
尼禄祭
之前的Java基础的学习耽搁了好久,最近也没啥事做,继续之前的学习进度吧。这次内容主要是Java数组的知识点,和冒泡、选择排序这两个算法,还有一个二分查找法。
1.数组
-
数据类型:引用类型
-
数据结构:线性结构
-
可存储任意数据类型元素,存储的元素类型统一
-
数组长度不可改变,一旦创建,即固定,可创建多维数组
-
优劣: 1.查询效率高 2.增删元素效率低
-
初始化方式:
1.静态初始化
int [] arr={10,12,31};
2.动态初始化
int [] arr=new int[3];
2.冒泡排序法
-
每次只比较相邻的两个数
-
需要保证每次循环的最后一个数字(已经确定是最大的那个数)不会再参与下一次循环
int temp;
int[]a={3,2,1,4,5};
for(int i=1;i<a.length;i++){
for(int j=0;j<a.length-i;j++){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
3.选择排序法
- 找出最小值,然后这个最小值和最前面的数据交换位置
int min;
int[]a={3,2,1,4,5};
for(int i=0;i<4;i++){
for(int j=i+1;j<5;j++){
if(a[i]>a[j]){
min=a[j];
a[j]=a[i];
a[i]=min;
}
}
}
4.二分法查找
-
二分法查找是建立在已经排序的基础之上的。
-
这个数组中没有重复的元素
public static int half(int[]a,int destElement){
int begin=0;
int end=a.length-1;
int mid;
while(begin<end){
mid=(begin+end)/2;
if(a[mid]==destElement){
return mid;
}else if(a[mid]>destElement){
end=mid-1;
}else if(a[mid]<destElement){
begin=mid+1;
}
}
return 0;
}
5.Java内置数组方法
-
数组的拷贝:System.arraycopy(src, srcPos, dest, destPos, length);
-
数组排序:Arrays.sort(arr);
-
二分法查找法:Arrays.binarySearch(a, key);