2020-07-03

part one: 数据结构
一. 定义: 相互之间存在一种或多种特定关系的数据元素的集合。
二. 分类

  1. 顺序存储: 把数据存储在一块连续的存储介质(比如硬盘或内存)上----举个例子:从内存中拿出第100个字节到 1000个字节间的连续位置,存储数据;
  2. 非顺序存储: 各个数据不一定存在一个连续的位置上,只要每个数据知道它前面的数据和后面的数据,就能把所有数据连续起来;链表就是典型的非顺序存储。
  3. 数组与链表:
    内存空间:
    链表存放的内存空间可以是连续的,也可以是不连续的,数组则是连续的一段内存空间。一般情况下存放相同多的数据数组占用较小的内存,而链表还需要存放其前驱和后继的空间。
    长度的可变性:
    链表的长度是按实际需要可以伸缩的,而数组的长度是在定义时要给定的,如果存放的数据个数超过了数组的初始大小,则会出现溢出现象。
    对数据的访问:
    链表方便数据的移动而访问数据比较麻烦;数组访问数据很快捷而移动数据比较麻烦。
    数组存储地址的计算: (a是数组首地址,len是每个数组元素所占长度)
    一维数组: a[i]的存储地址:a+ilen
    二维数组: a[m][n] 按行存储:a+(i * n+j) * len;按列存储:a+(j * m+i) * len
    eg.
    1)已知一维数组a中每个元素占用2个字节,求a[10]的存储地址?
    a[10]的存储地址为:a+10
    2=a+20
    2)已知4行5列的二维数组a中的每个元素占用2个字节,求元素a[3][2]按行为主序存储的存储地址和按列为主序存储的存储地址?
    按行存储:a+(35+2) *2 = a+34
    按列存储:a+(24+3) *2 = a+22
  4. 堆和栈:
    栈:
    栈具有数据结构中栈的特点,后进先出,所有存放在它里面的数据都是生命周期很明确(当然要求它不能存放太久,占有的空间确定而且占用空间小)。所有在Java中它存放的是8个基本数据类型和引用变量的,用完就马上销毁
    堆:
    堆可以理解它就是个一个可大可小的内存操作单元; 因此它的特点就是动态的分配内存,适合存放大的数据量!比如一个对象的所有信息,虽然它的引用指向栈中的某个引用变量;所有Java中堆是存放new出来的对象的。
    实现两个数组的交并补集
    import java.util.HashSet;
    import java.util.Set;
    public class TestHashSet {
    public static void main(String[] args) {
    Set A = new HashSet();
    Set B= new HashSet();
    A.add(1);A.add(2);A.add(3);A.add(4);
    B.add(3);B.add(4);B.add(5);B.add(6);
    System.out.println(“A:”+ A);
    System.out.println(“B:”+ B);
    // A 并 B
    Set A_B = new HashSet();
    A_B.addAll(A);
    A_B.addAll(B);
    System.out.println("A+B: "+A_B);
    // A 交 B
    Set AB = new HashSet();
    AB.addAll(A);
    AB.retainAll(B);
    System.out.println("A+B: "+AB);
    // B 关于 A 的补集 (由属于A而不属于B的元素组成的集合,称为B关于A的相对补集)
    Set A B = n e w H a s h S e t < I n t e g e r > ( ) ; A B = new HashSet<Integer>(); A B=newHashSet<Integer>();AB.addAll(A);
    A B . r e m o v e A l l ( B ) ; S y s t e m . o u t . p r i n t l n ( " A + B : " + A B.removeAll(B); System.out.println("A+B: "+A B.removeAll(B);System.out.println("A+B:"+AB);
    }
    }

给定一个数组,要求统计出该数组中的最大值、最小值、平均及总数
public class Test {
public static void main(String[] args) {
int arr[] = new int[]{4, 6, 22, 3, 16, 78, 9, 26};
getArray(arr);
}
public static void getArray(int[] arr){
double[] result = new double[4];
result[0] = arr[0];//数组最大值
result[1] = arr[0];//数组最小值
result[2] = arr[0];//数组总数
result[3] = arr[0];//数组平均值
for(int i = 1;i<arr.length;i++){
result[2] += arr[i];
if(result[0] < arr[i]){
result[0] = arr[i];
}
if(result[1] > arr[i]){
result[1] = arr[i];
}
}
result[3] = result[2]/arr.length;
System.out.println(“最大值:”+result[0]);
System.out.println(“最小值:”+result[1]);
System.out.println(“总数”+result[2]);
System.out.println(“平均值”+result[3]);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值