一 概述
在学习编程的过程中都绕不过数据结构与算法的学习
在这里整理一下体系
-
数据结构
- 数据的存储结构
- 顺序存储结构
- 链式存储结构
- 数据的逻辑结构
- 线性结构
- 树形结构
- 集合结构
- 图形结构
- 数据的存储结构
-
算法
- 算法的特性
- 输入
- 输出
- 有穷性
- 确定性
- 可行性
- 算法的基本要求
- 正确性
- 可读性
- 健壮性
- 时间复杂度
- 空间复杂度
- 算法的特性
在学习过程中主要讨论的是数据的逻辑结构
此篇主要写一些线性结构之数组的内容 陆续会整理完全
- 线性结构
- 数组
- 栈
- 队列
- 链表
附上Java代码
创建一个数组类
package util;
import java.util.Arrays;
public class MyArray {
//定义一个用于存储数据的数组
private int[] elements;
public MyArray() {
elements = new int[0];
}
//获取数组的长度
public int size() {
return elements.length;
}
//打印所有元素
public void show() {
System.out.println(Arrays.toString(elements));
}
//添加元素(追加)
public void add(int element) {
//创建一个新数组,长度为原数组长度+1
int[] newArr = new int[elements.length+1];
//把原数组赋值给新数组
for(int i=0;i<elements.length;i++) {
newArr[i] = elements[i];
}
//把要添加的元素赋给新数组的最后一个值
newArr[elements.length] = element;
//替换
elements = newArr;
}
//删除元素
public void delete(int index) {
//判断下标是否越界
if(index<0||index>elements.length) {
throw new RuntimeException("下标越界");
}
//创建一个新数组
int[] newArr = new int[elements.length-1];
for(int i=0;i<newArr.length;i++) {
//想要删除的元素的前头
if(i<index) {
newArr[i] = elements[i];
//想要删除的元素的后头
}else {
newArr[i] = elements[i+1];
}
}
elements = newArr;
}
*************************************************
//取出指定位置的元素
public int get(int index ) {
if(index<0||index>elements.length) {
throw new RuntimeException("下标越界");
}
return elements[index];
}
//插入元素 到指定位置
public void insert(int index,int element) {
//判断下标是否越界
if(index<0||index>elements.length) {
throw new RuntimeException("下标越界");
}
int[] newArr = new int[elements.length+1];
for(int i =0;i<elements.length;i++) {
if(i<index) {
newArr[i] = elements[i];
}else {
newArr[i+1] = elements[i];
}
}
//插入新的元素
newArr[index] = element;
elements = newArr;
}
//替换指定元素的位置
public void set(int index,int element) {
//判断下标是否越界
if(index<0||index>elements.length) {
throw new RuntimeException("下标越界");
}
elements[index] = element;
}
}
*************************************************
测试类
public class TestArray {
public static void main(String[] args) {
MyArray ma = new MyArray();
ma.add(5);
ma.add(4);
ma.add(3);
ma.show();
//ma.delete(1);
ma.insert(1, 11);
ma.set(3, 33);
ma.show();
//System.out.println(ma.get(1));;
}
}
有问题的可以私信,想进一步学习的在腾讯课堂DT课堂可找到,不是打广告,就是觉得老师讲的挺好