数据结构(一)---全文字希望你能看下去

数据结构是计算机科学中关键的概念,它涉及数据元素如何逻辑组织和物理存储。数据包括数据元素、数据项和数据对象,逻辑结构如链式、树状和图结构提供了数据之间的关系描述。物理结构则关注实际存储,包括顺序和链式存储,后者在插入和删除操作上更为灵活。数据类型定义了数据的范围,而抽象则是提取共性本质的过程。本文通过生动的比喻解释了数据结构的基本概念。

概念

  1. 数据结构是什么东东呢?
    我们的祖先很早就想到了用一些符号或者记号来帮助他们记忆当时发生的时间、事件、年份等等诸多信息。然后就日渐发展成了我们的文字,数字。所以数据结构也是一样的,为了让计算机认识和并应用的一种概括性很大的学科。
    书上是这样定义的:
    在这里插入图片描述

简单的是说:我们初中都学过分子结构吧,每个分子都是排列不同就会形成不同的结构。数据结构也是一样。数据元素之间不是独立,他们形成的特定的关系的话就成了数据结构。

1.1 数据:就是计算机能够认识的符号。
1.2 数据元素:这个概念是一个大类。就像数据库里面的专业名词–记录。比如人,动物,禽兽。这些概念都叫数据元素
1.3 数据项:这是数据的最小单位。比如说人有耳朵、鼻子、嘴巴。这些都叫数据项。
1.4 数据对象:是指性质相同的数据元素的集合。是数据的子集。比如人都用眼睛、头发、或者相同的年龄。这些都可以称做一个数据对象。

  1. 逻辑结构和物理结构
    2.1 逻辑结构就是我们数学上的集合。集合都有几种关系,比如说并集,交集、包含等。逻辑结构也是一样的。不过在数据上还是有特殊性:比如说链式结构、树状、图。这是常见的数据结构。
    2.2 物理结构:简单粗暴的理解就是实际的存储,数据该刚在你的内存、硬盘。光盘等的那个位置。那么上述的逻辑结构怎么实现在物理结构上–这就成了一个大难题了。

数据元素的存储只有两种:①顺序结构,就是我们的数组,缺点就是不好进行插入、删除等操作。你可能会想哎呀,数组不是提供了一些删除。添加方法吗?对呀,但你想想,你的数组每次是不是只存那么几个数据,随意删你肯定感觉不到什么。但是数据多了呢?现在给你一亿条数据,你删除了第100条数据,后面的数据是不是都是要往前走,那你要等多久才能处理完呢?
②链式结构,可以想成我们在医院叫号,你拿到了号可以不用一直在那排队,可以坐着打王者,。也可以出去买瓶江小白。等护士叫到你号,就到你了。所以应用到计算机上就是每个数据元素存放的位置是不同的,随意的你喜欢在那就在那。但是每个数据元素之间有一定的暧昧关系–这个叫指针。所以我们要把指针好好的放着,拿到了指针就找到你的暧昧。现在就比前面的顺序结构灵活多了,中间删除一个数据,我只要改一下我的暧昧不就行了吗?不懂就回头在看看,你品你细品。不过链式还是存在一个小问题的。什么问题呢?你看过《无间道》吗?当UC的han导哪挂老称了,那么UC的身份谁知道呢?是吧,是吧。

所以结论就是逻辑结构处理的是问题,物理结构处理的是计算机。统一目的就是将数据及其逻辑结构存到内存中。

3.数据类型
数据类型就是我们经常用的int这些。注意注意:每个类型都是有范围的。

抽象是指抽取出事物具有普遍性的本质,抽象还不会的还需要去恶补语言。

抄袭的图
在这里插入图片描述
在这里插入图片描述

注:这是我自己的学习笔记,不喜勿喷。

### SQL 中聚合相似文本数据的方法 在处理数据库中的文本数据,有会遇到需要对相似的文本进行聚合的情况。这可以通过 `GROUP BY` 或者结合全文检索技术来实现。 #### 方法:使用 `GROUP BY` 和符串匹配函数 当文本数据存在部分重复或者相似性较高,可以利用符串匹配函数(如 `LIKE`, `SUBSTR`, 或正则表达式)配合 `GROUP BY` 来完成聚合操作。例如: 假设有个表 `texts`,其中有列 `content` 存储了大量的文本数据,我们希望按照某些特定模式对其进行分组并计算每种模式的数量。 ```sql SELECT SUBSTR(content, 1, 10) AS pattern, COUNT(*) AS count FROM texts WHERE content LIKE 'example%' GROUP BY SUBSTR(content, 1, 10) ORDER BY count DESC; ``` 此查询通过截取前十个符作为模式[^1],并对满足条件的数据进行了分组和计数。这里的关键在于选择了合适的符串函数来定义“相似”的标准。 #### 方法二:基于编辑距离或其他算法判断相似度后再聚合 对于更复杂的场景,比如两段文字虽然不完全相同但非常接近的情况下,单纯依靠单的子串比较可能不够精确。此可以考虑引入外部逻辑先计算出各条记录之间的相似程度得分,然后再依据该得分为基础做进步的操作。 种常见的做法是在应用程序层面上预先处理好这些文本间的差异指标再存入数据库供后续分析;另种则是借助存储过程或者其他高级特性直接在DBMS内部实现这功能。不过需要注意的是后者往往会对性能造成较大影响因此需谨慎评估适用场合[^2]。 另外值得注意的点是,在实际应用当中还可以探索诸如Levenshtein Distance之类的专门用来衡量两个序列之间差别大小的技术手段,并将其融入到整体解决方案之中去提升最终效果的质量水平[^3]。 #### 方法三:采用全文索引机制辅助筛选目标群体之后再实施常规意义上的汇总动作 如果所处环境支持创建FULLTEXT类型的索引结构的话,则完全可以充分利用这点优势快速定位那些彼此间具有高度关联性的项目出来形成初步候选名单列表形式呈现给下步骤继续深入探讨研究下去直至得出满意结论为止[^4]。 ```sql CREATE FULLTEXT INDEX idx_content ON texts (content); SELECT MATCH(content) AGAINST('target text') AS relevance, COUNT(*) FROM texts WHERE MATCH(content) AGAINST('target text') GROUP BY relevance HAVING COUNT(*) > 1; ``` 以上代码片段展示了如何设置全文索引来增强搜索能力的同也提供了相应的示范例子说明怎样运用它们来进行有效的群集化管理活动开展起来更加顺畅高效便捷许多呢! --- ### 总结 综上所述,针对不同需求可以选择不同的策略应对挑战达成目的。无论是单直观易于理解掌握的传统方式还是复杂精细讲究效率优化的新颖途径都各有千秋值得尝试体验番哦~
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值