数据结构--线性结构之数组
一、数组Array的基本使用
1. 定义:
数组是一个顺序存储结构
2. 创建:
2.1 先创建后赋值
//先创建后赋值
int[]arr1 = new int[3];
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
2.2 创建时同时赋值
//创建时同时赋值
int[]arr1 = new int[]{1,2,3};
3. 属性:
3.1 长度:
创建时必须给出长度
长度一旦创建不可改变
int len = arr1.length;
3.2 快速查看数组中的元素:
Arrays.toString(arr1);
4. 遍历:
for(int j=0; j<arr1.length; j++){
System.out.println(arr1[j]);
}
5. 添加新元素:
//创建一个新数组
int[]arr2 = new int[arr1.length+1];
//将原数组的值赋值到新数组
for(int j=0; j<arr1.length; j++){
arr2[j] = arr1[j];
}
//添加新的数值至结尾
arr2[arr1.length] = 6;
//将arr1的指向从原arr1变为arr2的指向
arr1 = arr2;
6. 删除元素:
int[]arr1 = new int[]{9,8,7,6,5,4};
//要删除的元素下标
int del = 3
//创建一个新数组
int[]arr2 = new int[arr1.length-1];
//将原数组的值赋值到新数组
for(int j=0; j<arr1.length; j++){
//将要删除的元素前面的直接赋值
if(j < del){
arr2[j] = arr1[j];
}
//将要删除的元素后面的直接赋值
if(j > del){
arr2[j] = arr1[j+1];
}
}
//将arr1的指向从原arr1变为arr2的指向
arr1 = arr2;
二、Binary Search二分法查找
int[] arr1 = new int[]{1,2,3,4,5,6,7,8,9};
int begin = 0;
int end = arr1.length - 1;
int mid = (begin + end)/2; //int会自动取整数部分,而不是四舍五入
int index = -1;
int target = 2;
//不知道会循环多少次时使用true
while(true){
//没有这个元素
if(begin > = end){
return -1;
(return index;)
}
if(arr1[mid] == target){
index == mid;
break;
(return index;)
} else{
if(arr1[mid] > target){
end = mid - 1;
} else{
begin = mid + 1;
}
mid = (end + begin) / 2;
}
System.out.println(index);
}