1.数组的创建与元素赋值:
2.针对于数值型的数组:
3.数组的赋值与复制
3.1 赋值
int[] array1,array2;
array1 = new int[]{1,2,3,4};
array2 = array1;
如何理解:
相当于将一个exe发送桌面快捷方式,改变array1或array2都会改变里面的内容,即array1变array2也变,反之也是。
3.2 复制
String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//数组的复制(区别于数组变量的赋值:arr1 = arr)
String[] arr1 = new String[arr.length];
for(int i = 0;i < arr1.length;i++){
arr1[i] = arr[i];
}
如何理解:
改变其中一个对另一个没有什么影响
4.数组元素的反转
//数组的反转
//方法一:
// for(int i = 0;i < arr.length / 2;i++){
// String temp = arr[i];
// arr[i] = arr[arr.length - i -1];
// arr[arr.length - i -1] = temp;
// }
//方法二:
// for(int i = 0,j = arr.length - 1;i < j;i++,j--){
// String temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
// }
5.数组中指定元素的查找
5.1 线性查找:
String[]arr = new String[]{"AA","BB"};
String dest = "BB";
dest = "CC";
boolean isFlag = true;
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("找到了指定的元素,位置为:" + i);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遗憾,没有找到的啦!");
}
实现思路:
一个一个比较查找
适用性:
具有普遍适用性
5.2 二分法查找:
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int dest1 = -34;
dest1 = 35;
int head = 0;//初始的首索引
int end = arr2.length - 1;//初始的末索引
boolean isFlag1 = true;
while(head <= end){
int middle = (head + end)/2;
if(dest1 == arr2[middle]){
System.out.println("找到了指定的元素,位置为:" + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle - 1;
}else{//arr2[middle] < dest1
head = middle + 1;
}
}
实现思路:
二分之一法
适用性:
所要查找的数组必须有序。
6.数组的排序算法
理解:
1)衡量排序算法的优劣:
1.时间复杂度:分析关键字的比较次数和记录的移动次数
2.空间复杂度:分析排序算法中需要多少辅助内存
3.稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保 持不变,则称这种排序算法是稳定的
2)排序的分类:内部排序 与 外部排序
内部排序:整个排序过程不需要借助于外部存储器(如磁盘等),所有排序操作都在内存中完成。
外部排序:参与排序的数据非常多,数据量非常大,计算机无法把整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘)。外部排序最常见的是多路归并排序。可以认为外部排序是由多次内部排序组成。
3)不同排序算法的时间复杂度
冒泡排序的实现:–需要能手写出来
import java.util.Arrays;
public class TestBubbleSort{
public static void main(String[] args){
int[]arr = new int[]{0,98,-23,78,99,-23,-45,98,24};
for(int i = 0;i < arr.length - 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;
}
}
}
System.out.println(Arrays.toString(arr));
}
}