数据结构-1(常见结构概述)(自用)

常见误区(随时完善)

  • “==” :比较内存地址

数组

1.优缺点

1.1优点

连续存储结构,寻址简单

1.2缺点

连续存储结构,增删数据难,长度固定,一旦创建,不能改变大小

2.表达方式

// 声明数组
int[] arr = new int[5]; // 创建一个长度为5的整型数组

// 初始化数组
int[] arr = {1, 2, 3, 4, 5}; // 使用大括号初始化数组

// 访问数组元素
int element = arr[0]; // 访问数组的第一个元素

// 修改数组元素
arr[1] = 10; // 修改数组的第二个元素为10

3.常见方法

3.1 Sum(数组名,左位置,右位置)

  • 优化 :Sum(arr,L,R)

借助数组H [ i ] :第0-i位置累加和

Sum(arr,3,8)=H[8]-H[2]

  • 缺点:查询次数多时,二维数组好些,免除减法运算;

3.2 Arrays.sort(arr)

import java.util.Arrays;

int[] arr = {5, 2, 9, 1, 5};
Arrays.sort(arr); // 默认升序排序
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 5, 5, 9]

3.3 Arrays.binarysearch(arr,target)

 ps.数组已排好序

int index = Arrays.binarySearch(arr, target);
if (index >= 0) {
    System.out.println("Element found at index: " + index);
} else {
    System.out.println("Element not found");
}

3.4数组拷贝 

3.4.1 浅拷贝
int[] arr2 = arr.clone(); // 拷贝数组
3.4.2 指定范围拷贝
System.arraycopy(arr, 0, arr2, 0, arr.length); // 拷贝arr到arr2

3.5数组填充

int[] arr = new int[5];
Arrays.fill(arr, 10); // 将数组所有元素填充为10
System.out.println(Arrays.toString(arr)); // 输出:[10, 10, 10, 10, 10]

3.6数组转字符串 

int[] arr = {1, 2, 3, 4, 5};
String str = Arrays.toString(arr); // 转换为字符串
System.out.println(str); // 输出:[1, 2, 3, 4, 5]

链表

存储结构

单链表

双链表

1.特点

  • 元素存储在不连续的内存空间中。

  • 插入和删除操作效率高,无需移动其他元素。

  • 不支持随机访问,只能通过遍历访问元素。

2.表达方式

import java.util.LinkedList;

// 创建链表
LinkedList<Integer> list = new LinkedList<>();

// 添加元素
list.add(1);
list.add(2);
list.add(3);

// 访问元素
int firstElement = list.get(0); // 访问第一个元素

// 删除元素
list.remove(1); // 删除索引为1的元素

// 遍历链表
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

List(列表)

1.特点

  • 有序性

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值