数据结构学习之数组

数据结构——数组的学习记录

数组性质

1.数组中的数据元素数目是固定的,一旦定义了一个数组,其数据元素数目不再有增减的变化
2.数组中的数据元素具有相同的数据元素类型
3.数组中的每个数据元素都和一组唯一的下标对应
4.数组是一种随机的存储结构,可随机存储数组中的任意数据元素。

数组的类型与定义方式

1.数组类型

数组类型默认初始值
byte0
short0
int0
long0
char编码为0的字符
String(引用类型)null
float0
double0

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];  也可以理解为“43列”。
形式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);
			}
	}

	

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值