数据结构——数组的学习记录
数组性质
1.数组中的数据元素数目是固定的,一旦定义了一个数组,其数据元素数目不再有增减的变化
2.数组中的数据元素具有相同的数据元素类型
3.数组中的每个数据元素都和一组唯一的下标对应
4.数组是一种随机的存储结构,可随机存储数组中的任意数据元素。
数组的类型与定义方式
1.数组类型
数组类型 | 默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
char | 编码为0的字符 |
String(引用类型) | null |
float | 0 |
double | 0 |
2.一维数组的定义方式
2.1数组声明的俩种方式:
1.int[] array;
2.int array[];
2.2数组初始化
//分配长度为4个int型的内存空间,并分别赋初始值1,2,3,4
int[] array = {1,2,3,4};
int[] array = {1,2,3,4};
//分配长度为4的内存空间,并全部赋为0
int[] array = new int[4]
int[] array =new int{4,0,0,0};
3.二维数组的定义方式
3.1.二维数组的理解
一个二维数组,有二个1维数组组成,每一个一维数组有3个元素,即如下定义:
int[][]a={{1,2,3},{6,5,4}};
3.2.二维数组的初始化形(可以在声明数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化))
形式1.动态初始化
数据类型 数组名 [ ][ ] = new 数据类型[m][n]
数据类型 [ ][ ] 数组名 = new 数据类型[m][n]
数据类型 [ ] 数组名 [ ] = new 数据类型[m][n]
举例:int [ ][ ] arr=new int [4][3]; 也可以理解为“4行3列”。
形式2、 静态初始化
数据类型 [ ][ ] 数组名 = {{元素1,元素2....},{元素1,元素2....},{元素1,元素2....}.....};
举例:int [ ][ ] arr={{22,15,32,20},{12,21,25,19},{14,58,34,24},}。
数组的增删改查
-
数组代码需求(贴的代码可能达不到要求,有点菜,有大佬看见还希望可以帮帮忙嘿嘿):
- 1.数组的键盘输入元素以及下标添加元素
- 2.数组的键盘输入元素查找元素
- 3.数组的键盘输入元素查找元素下标
- 4.根据数组下标删除元素,根据数组元素删除元素
package shuzudemo;
import java.util.Arrays;
import java.util.Scanner;
public class querydemo{
//查询元素
public static int querycha(int arr[],int ele) {
int index = -1;
for(int i=0;i<arr.length;i++) {
if(arr[i]==ele) {
index = i;
break;
}
}
return index;
}
//插入元素
public static int[] add(int[] arr,int ele,int index) {
int[] newArr = new int[arr.length+1];
if(index >= 0 && index<newArr.length) {
for(int i = 0;i<index;i++) {
newArr[i] = arr[i];
}
newArr[index] = 100;
for(int i=index;i<arr.length;i++) {
newArr[i+1]=arr[i];
}
}else {
System.out.println("索引超出范围");
return arr;
}
return newArr;
}
//根据下标删除元素
public static int[] del(int[] arr,int ele,int index) {
if(index>=0 && index<arr.length) {
for(int i=index;i<arr.length-1;i++) {
arr[arr.length-1] = 0;
}
}else {
System.out.println("没有此下标");
}
return arr;
}
//根据元素删除元素
public static int delele(int[] arr,int ele) {
int index = -1;
for(int i=0;i<arr.length;i++) {
if(ele == arr[i]) {
index = i;
break;
}
}
if(index == -1) {
return index;
}
for(int i =index;i<arr.length-1;i++) {
arr[i]=arr[i+1];
}
arr[arr.length-1] = 0;
return index;
}
private static void print(int[] arrs) {
for(int i=0;i<arrs.length;i++) {
System.out.println(arrs[i]);
}
}
public static void main(String[] args) {
int ARRAYLENGTH = 4;
int[] arr = new int[ARRAYLENGTH];
int[] arrs = new int[ARRAYLENGTH-1];
Scanner sc=new Scanner(System.in);
System.out.println("请输入要输入的数组:");
for(int i= 0;i<arr.length;i++) {
arr[i]=sc.nextInt();
}
System.out.println("请输入你要查找的数组元素:");
int c = sc.nextInt();
System.out.println("你输入的是"+c+"对应的数组元素下标是"+arr[c]);
Scanner input = new Scanner(System.in);
System.out.print("从键盘输入被删除的元素:");
int a=input.nextInt();
int n=0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]!=a)
{
arrs[n++]=arr[i];
}
}
print(arrs);
}
}