串、数组和广义表

串、数组和广义表

串:内容受限的线性表

数组、和广义表:线性结构的推广

串(string)

零个或多个任意字符组成的有限序列s(串名)="a1a2a3a4...an(串值) 串长n"

子串:串中任意个连续字符组成的子序列(含空串)称为该串的子串

例如,“abcde”的子串有

“”,“a”,"ab","abc","adcd"和“abcde”等

真子串是指不包含自身的所有子串

主串:包含子串的串相应的称为主串

字符位置:字符在序列中的序号为该字符在串中的位置

子串位置子串第一个字符在主串中的位置

空格串:有一个或多个空格组成的串,与空串不同

串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的

串的顺序存储结构

  • 串的链式存储结构

优点:操作方便

缺点:存储密度低

存储密度=串值所占的存储/实际分配的存储

可以将多喝字符存放在一个节点中,以克服其缺点

串的模式匹配运算

算法目的

确定主串中所含的子串(模式串)第一次出现的位置(定位)

算法应用

搜索引擎、拼写检查、语言翻译、数据压缩

算法种类

  • BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的)
  • KMP算法(特点:速度快)

Brute-Force

简称简单匹配算法,采用穷举法的思路

package mainimport "fmt"func IndexBF(s string, t string) int {i := 0j := 0for i < len(s) && j < len(t) {fmt.Println(s[i:i+1], t[j:j+1], i, j)if s[i:i+1] == t[j:j+1] {  // 如果母串的字母等于子串的 则进行下一个的比较i++j++} else {  // 否则回溯   从母串的下一个开始比较i = i - j + 1j = 0}}fmt.Printf("%d-----%d\n", j, i)if j >= len(t) {  // 当子串的指针等于子串长度则存在return i - len(t)}return 0
}func main() {s1 := "asdasdjahsgdkashjdgakdha"s2 := "dha"res := IndexBF(s1, s2)fmt.Println(res)}
时间复杂度O(n*m)

KMP(Kunth Morris Pratt)算法

利用已经部分匹配的结果而加快模式串的滑动速度

且主串S的指针I不必回溯!可提速到0(n+m)

数组

按一定格式排列起来的具有相同类型的数据元素的集合。

一维数组

若线性表中的数据元素为非结构的简单元素则称为一维数组

一维数组的逻辑结构

线性结构,定长的线性表

声明格式

数据类型 变量名称【长度】

	next := [...]int{1, 2, 3, 4, 5, 6}

二维数组

若一维数组中的数据元素又是一堆数组结构,则称为二维数组

二维数组的逻辑结构

  • 非线性结构:每一个数据元素即在一个行列表中又在一个列列表中
  • 线性结构定长的线性表:该线性表的每个数据元素也是一个定长的线性表
	doubleArray := [][]int{{1, 2, 3}, {2, 2, 2}, {2, 3, 4}}

矩阵

由m*n个元素拍成的m行n列的表

矩阵的常规存储

将矩阵描述成一个二维数组

矩阵的常规存储的特点

  • 可以对其元素进行随机存储
  • 矩阵运算非常简单;存储密度为1

不适宜常规存储的矩阵

值相同的元素很多且呈现某种规律分布;零元素多

矩阵的压缩存储

为多个相同的非零元素只分配一个存储空间;对零元素怒不分配空间

特殊矩阵的压缩存储

什么是压缩存储

若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间

什么样的矩阵能够压缩

一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。

什么叫稀疏矩阵

矩阵中非零元素的个数较少(一般小于5%)

矩阵压缩

对称矩阵

特点:在n*n的矩阵a中,满足如下性质aij=aji(1<=i,j<=n)

1 5 1 3 7
5 0 8 0 0
1 8 9 2 6
3 0 2 5 1
7 0 6 1 3

存储方法:只存储下(或者上)三角(包括主对角线)的数据元素。共占用n(n+1)/2个元素空间

对称矩阵的存储结构:

对称矩阵上下三角中的元素数均为

n(n+1)/2

可以以行序为主序将元素存放在一个一维数组sa[n(n+1)/2]中例如

sa=[1,5,0,1,8,9,3,0,2,5,1 ...]

ann的在一维数组中的位置

ann是第n行 那他前面有n-1行,前面有在这一行他前面有n-1个元素,他前面所有的元素和是1+2+3+4+....(j-1)=(1+j-1)*(j-1)/2=j*(j-1)/2 首项+末项*项数/2

三角矩阵

特点:对角线以下或以上的数据元素(不包括对角线)全部为常数C

存储方法:重复元素c共享一个元素空间,共占用n(n+1)/2+1个元素怒空间sa[1.....n(n+1)/2+1 ]

对角矩阵

特点:

在n*n的方针中,所有非零元素怒都集中在以主对角线为中心的带状区域中,区域外的值全为0,则称为对角矩阵。常见的有 三对角矩阵、五对角矩阵、七对角矩阵等

稀疏矩阵

设在M*N的矩阵中有t个非零元素,

三元组顺序表又称为 有序的双下标法。

三元组顺序表的优点:非零元素在表中按行序有序存储,因此便于进行依行顺序处理的矩阵运算

三元组顺序表的缺点:不能随机存取。若按照行号存取某一行中的非零元素,则需要从头开始进行查找

广义表

又称lists是N>=0个元素A0,A1,A2,A3…An-1 的有限序列,其中每一个ai或者是元素,或者是一个广义表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550231.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

农场小程序带你走进生态农产品的世界

在快节奏的现代生活中&#xff0c;人们对食品安全的关注日益增强&#xff0c;对环境、健康农产品的需求也愈发迫切。然而&#xff0c;传统农产品市场往往信息不透明&#xff0c;消费者难以直接了解农产品的生长环境和生产过程&#xff0c;导致信任缺失。而农场小程序的出现&…

制定六西格玛人才培养方案需要考虑哪些因素?

当下&#xff0c;六西格玛作为一种先进的质量管理方法&#xff0c;被越来越多的企业采纳并应用于日常管理和流程优化中。然而&#xff0c;要成功实施六西格玛&#xff0c;关键在于培养一支具备高度专业素养和实战能力的六西格玛人才队伍。那么&#xff0c;制定六西格玛人才培养…

什么情况?上交所服务器被你们给买崩了?

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 上午好&#xff0c;我的网工朋友。 9月27日早上&#xff0c;A股市场迎来了一波前所未有的火爆行情&#xff0c;成交量激增&#xff0c;市场情绪高…

加固与脱壳03 - 加固技术讨论

在 02 中&#xff0c;贴了一张图&#xff0c;里面涵盖了加固的绝大部分知识。现在我们稍微展开说一下其中几个&#xff0c;也是后续会深入学习的&#xff0c;其中一些还需要单独成系列才行。 代码混淆 分为 Java 层与 Native 层混淆。 Java 层的混淆主要分为两种&#xff1a…

基于微信小程序的交友平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

[ComfyUI]Flux:超美3D微观山水禅意,经典中文元素AI重现,佛陀楼阁山水画卷

在数字艺术和创意领域&#xff0c;[ComfyUI]Flux以其独特的虚实结合技术&#xff0c;已经成为艺术家和设计师们手中的利器。今天&#xff0c;我们激动地宣布&#xff0c;[ComfyUI]Flux带来了一款超美的3D微观山水禅意作品&#xff0c;经典中文元素通过AI技术重现&#xff0c;包…

结婚证识别-离婚证识别接口-结婚证识别API应用场景

在信息化与智能化高速发展的今天&#xff0c;证件的自动识别技术逐渐成为了各行各业数字化转型的关键工具&#xff0c;而结婚证识别接口、离婚证识别接口正在悄然改变着传统的民政工作方式。 结婚证识别与离婚证识别接口是基于光学字符识别&#xff08;OCR&#xff09;技术的智…

热门财务软件大盘点,哪款最适合你?

本文介绍了ZohoBooks、金蝶云、速达会计等10款财务记账软件&#xff0c;各具优点&#xff0c;适合不同需求企业。各软件特点包括实时财务跟踪、多币种管理、无缝银行账户同步等&#xff0c;助企业高效管理财务。建议企业根据自身需求试用后选择。 一、Zoho Books Zoho Books是…

FreeRTOS列表与列表项

1.什么是列表与列表项 列表与列表项实际上是FreeRTOS中一个大量使用的一种数据结构 1.列表 列表的概念有点像链表&#xff0c;在 FreeRTOS 中&#xff0c;列表主要用于以下几个方面&#xff1a; 任务的管理&#xff1a;FreeRTOS 使用列表来管理不同的任务&#xff0c;包括就…

计算机网络面试题——第二篇

1. TCP拆包和粘包 现象 粘包&#xff1a;指在TCP传输中&#xff0c;发送方的多个数据包在接收方被合并在一个包接收&#xff0c;导致多条消息数据粘在一起&#xff0c;接收方无法正确区分这些消息的边界。拆包&#xff1a;指的是发送方的一个数据包在接收方被分成了多个包接收…

springboot集成mybatis插入数据时返回刚插入数据的自增id,插入数据没有使用实体

直接上代码吧 需要改两个地方一个dao一个xml 实现类里的逻辑 dao中新增注解 Options(useGeneratedKeys true, keyProperty "id")xml中新增 useGeneratedKeys"true" keyProperty"id"

2024年【电工(高级)】考试题及电工(高级)考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;高级&#xff09;考试题根据新电工&#xff08;高级&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将电工&#xff08;高级&#xff09;模拟考试试题进行汇编&#xff0c;组成一套电工…

Android问题笔记五十:构建错误-AAPT2 aapt2-7.0.2-7396180-windows Daemon

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

xxl-job--03--分片广播 动态分片

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 xxl-job通过分片广播模式前言1.定义什么是分片广播&#xff1a;即xxl-job调度中心发出一次调度&#xff0c;所有相关节点全部执行一次 采用分片广播调度优点 2.API介…

基于 ESP-AT 固件从外部服务器获取文件,使用分段续传的方式

**可使用 ATHTTPCGET 指令获取 HTTP\HTTPS 的资源&#xff0c;将返回资源的 Size 和 Data ** AT 指令序列如下&#xff1a; ATRESTOREATCWMODE1 //设置 WiFi Station 模式ATCWJAP"cc2.4","12345678" //连接 WiFi ATHTTPCHEAD…

JAVA全球美业新风尚国际版同城美容美发到店上门一体化服务系统小程序源码

全球美业新风尚&#xff0c;美丽触手可及&#xff01;✨ &#x1f30d; 开篇&#xff1a;引领国际美业新潮流 在这个追求个性与美丽的时代&#xff0c;美容美发已不再是简单的日常护理&#xff0c;它成为了我们展现自我、追求品质生活的一种方式。而“全球美业新风尚国际版同…

qt 图形视图框架 事件处理

Qt 的图形视图框架&#xff08;Graphics View Framework&#xff09;提供了一套丰富的类来管理大量的自定义 2D 图形项&#xff08;QGraphicsItem&#xff09;&#xff0c;以及这些图形项之间的交互和事件处理。在这个框架中&#xff0c;事件处理是一个关键部分&#xff0c;它允…

如意控物联网项目-ML307R模组软件及硬件调试环境搭建

软件及硬件调试环境搭建 1、 软件环境搭建及编译 a) 打开官方SDK&#xff0c;内涵APP-DEMO&#xff0c;通过vscode打开程序&#xff0c; 软件程序编写及编译参考下边说明文档链接 OneMO线上服务平台 编译需预安装python3.7以上版本&#xff0c;安装完python后&#xff0c;打开…

微信小程序使用scroll-view 加上enable-flex之后高度变得特别长

横向滚动给scroll-view标签加上了display:flex的样式后高度变得很长。 可以在设置align-items: flex-start;可解决这个问题。 或者给scroll-view下的标签加上height: fit-content;

普密斯在线图像测量仪:为质量把关助力

质量是企业的生命线&#xff0c;普密斯在线图像测量仪是质量把关的得力助手。 在产品生产过程中&#xff0c;它持续不断地对产品进行测量监控。一旦发现尺寸偏差超出允许范围&#xff0c;就会及时发出警报。 在塑料制品生产中&#xff0c;它可以确保每个塑料制品的厚度、长度等…