![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
fjjnjgh
这个作者很懒,什么都没留下…
展开
-
数据结构 —— 哈希表
十一、哈希表(散列)应用场景有一个公司,当右新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工id时,要求查到该员工索引信息要求:不适用数据库,尽量节省内存,速度越快越好基本介绍也叫散列表,是根据关键码值二直接进行访问的数据结构。也就是说,它通过把关键码值映射到一个表中一个位置来访问记录,以加快查找速度。这个映射函数叫散列函数,存放记录的数组叫做散列表实现缓存层定义哈希表可以自己实现缓存层:数组+链表数组+二叉树11.1 使用哈希表管理雇员信息需原创 2020-12-31 15:21:28 · 154 阅读 · 0 评论 -
数据结构 —— 查找算法
十、查找算法常用的查找算法:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找10.1 线性查找一个数列可有序,可无序代码实现/** * 线性查找 * 这里是找到一个即返回 * @param arr 查找的数据数列 * @param val 需要查找的值 * @return */public static int seqSearch(int[] arr,int val){ //线性查找是逐一比对,发现相同值,返回下标 for (int i = 0;原创 2020-12-31 15:20:18 · 195 阅读 · 0 评论 -
数据结构 —— 八大排序算法
九、排序算法(Sort Algorithm)9.1 排序算法介绍和分类将一组数据,依指定顺序进行排列排序的分类内部排序指将需要处理的所有数据都加载到内部存储器中进行排序外部排序数据量过大,无法全部加载到内存中,需借助外部存储进行排序常见的排序算法9.2 冒泡排序(Bubble Sort)基本思想通过对待排序序列从前向后(从下表较小的元素 开始),依次比较相邻元素的值,若发现逆序,交换相邻元素的值基本代码public static void bubbleSorting(原创 2020-12-31 15:18:37 · 242 阅读 · 0 评论 -
数据结构 —— 算法复杂度
八、算法复杂度8.1 算法时间复杂度度量一个程序执行时间的两种方法事后统计的方法两个问题:相对设计的算法的运行行能进行评测,需要实际运行程序所得时间的通缉令依赖于计算机的硬件、软件等环境因素事前估计法通过分析某个算法的时间复杂度来判断那个算法更优时间频度一个算法花费的时间与算法中语句的执行此时成正比,语句执行次数叫时间频度(语句频度),记为T(n)对于时间频度,可以忽略常数项,低次项和系数时间复杂度算法中的基本操作语句的重复执行次数时问题规模n的某个函数用T(n)表原创 2020-12-31 15:17:30 · 149 阅读 · 0 评论 -
数据结构 —— 递归算法
七、递归(Recursion)回溯算法**概念:**方法自己调用自己有助于编程者解决复杂问题递归调用机制Java有三个分区,栈,堆,方法区当程序执行到一个方法是开辟一个独立空间,在栈之中每隔空间的数据(局部变量)是独立的打印问题public static void test(int n){ if (n>0){ test(n-1); } System.out.println("n = "+n);}阶乘问题public static原创 2020-12-31 15:16:41 · 333 阅读 · 1 评论 -
数据结构 —— 栈
六、栈(Stack)6.1 实际需求计算722-5+1-5+3-3对于计算机而言,其接收到的就是一个字符串计算机底层如何计算获得结果?6.2 栈的介绍栈是一个先入后出的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。最先放入的元素在栈底,最后放入的元素在栈顶删除元素从栈顶开始删除6.3 栈的应用场景子程序调用:在跳往子程序前,会将下个指令的地址存在堆栈中,直到子程序执行完原创 2020-12-31 15:15:44 · 84 阅读 · 0 评论 -
数据结构 —— 链表
五、链表(Linked-List)5.1 单链表链表(linked list)有序列表,但是存储不连续特点:以节点形式存储每个节点包括data域,next域:指向下一节点链表的各个节点不一定时连续存放的链表分带头节点的链表和无头节点的链表,根据实际需求确定5.1.1 应用实例使用带head节点的单向链表实现——水浒英雄排行榜管理完成对英雄人物的增删改查操作添加时两种方法,直接添加至链表尾部,或插入至指定位置分析:创建英雄节点(class,存放信息),创建头节点时,不存放原创 2020-12-31 15:13:27 · 97 阅读 · 0 评论 -
数据结构 —— 队列
队列(Queue)队列的应用场景银行排队案例,买票案例队列概述队列是一个有序列表,可以用数组或是链表来表现遵循先进先出的元组队列的实现方式数组形式代码实现package com.why.data_structure.queue;import java.awt.*;import java.util.Arrays;import java.util.Scanner;/** * @Description TODO 用数组模拟队列 * @Author why * @Date原创 2020-12-31 15:12:11 · 51 阅读 · 0 评论 -
数据结构 —— 稀疏数组
三、稀疏数组稀疏数组的应用场景问题:五子棋程序,存盘退出和续上盘的功能定义:二维数组很多值都是默认值0,或者大多数值都相同,这些数据没有意义,该数组可用稀疏数组保存。处理方法:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素 的行列及值记录在一个小规模的数组中,从而缩小程序的规模举例用二维数组记录行列值稀疏数组思路分析二维数组转稀疏数组遍历原始二维数组,得到有效数据的个数sum根据sum创建稀疏数组aparseArr int【sum+1】将二维数组的有效数据存入到原创 2020-12-31 15:10:36 · 80 阅读 · 0 评论 -
数据结构概述
数据结构概述数据结构和算法的关系数据结构时一门研究组织数据方式的学科程序 = 数据结构 + 算法数据结构线性结构:最常用的数据结构,数据元素之间存在一对一的线性关系两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的链式存储的线性表叫链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组、队列、链表和栈非线性结构:包括:二维数组,多维数组,广义表,树结构,图结构...原创 2020-12-31 15:08:04 · 35 阅读 · 0 评论