数据结构与算法
文章平均质量分 95
云微123
饮糊涂酒一瓢,炖悲喜一锅吃掉x
个人网站:
www.yunwei123.tech
github:
https://github.com/yunwei37
展开
-
用 rust 实现 llvm 源码中的可持久化 AVL 树:ImmutableMap
这几篇想简单谈谈一下自己在写代码时遇见的,或者阅读 llvm 相关代码时见到的数据结构实现。本文源代码:https://github.com/yunwei37/immutable-map-rs关于 ImmutableMapImmutableMap 是一种可持久化数据结构,在进行插入或删除操作时并不对原先的数据结构进行改动,而是创建一个新的拷贝。关于可持久化数据结构,可以参考维基百科[1]:Persistent_data_structure这里参考的是 llvm 中的 ImmutableMap/I.原创 2022-03-17 23:44:43 · 798 阅读 · 0 评论 -
io_uring 从原理到动手实践 part1: 使用系统调用接口实现 cat 程序
原文感觉目前看到介绍 io_uring 的文章还是比较少,大部分都集中在对其原理性的介绍和简单的对官方文档的翻译,真正结合实际的例子还是比较少。本文翻译整理自一篇博客:io-uring-by-example-part-1-introduction我也增加了一些自己的理解和其他的参考材料。另外,在 2020 年,C++ 也正式将协程 coroutine 加入标准,我尝试使用 io_uring 和 c++20 协程实现了一个高性能web服务器,并进行了一些性能测试,具体代码会放在这个仓库里面,同时也包含.翻译 2021-12-16 16:34:21 · 512 阅读 · 0 评论 -
rust 入门笔记:使用rust实现双向链表、二叉树
这是 os summer of code 2020 项目每日记录的一部分:github地址:https://github.com/yunwei37/os-summer-of-code-daily双向链表数据结构定义:use std::rc::Rc;use std::cell::RefCell;use std::clone::Clone;#[derive(Debug)]struct ListNode{ value :i32, next: Option<Rc<Re原创 2020-07-11 22:04:34 · 2246 阅读 · 0 评论 -
改进的自适应中值滤波算法 去除椒盐噪声 python 代码实现
传统的中值滤波算法在椒盐噪声的去除领域有着比较广泛的应用,其具有较强的噪点鉴别和恢复能力,也有比较低的时间复杂度:其基本思想是采用像素点周围邻接的若干像素点的中值来代替被污染的像素点;但也存在一定的缺陷,随着图像被污染程度的加深,此方法恢复的图像细节模糊、边缘损失也会越严重。此处采用改进的自适应中值滤波算法进行图像恢复:根据图像处理的空间相关性原则,采用自适应的方法选择不同的滑动窗口大小;在算法中单滤波窗口大小达到最大值时,采用均值滤波;def get_window(res_img,noise原创 2020-06-10 21:49:02 · 5780 阅读 · 6 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(6)- 语义分析:符号表和变量、函数
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(6)- 语义分析:符号表和变量、函数项目github地址及源码:https://github.com/yunwei37/tryC这一部分,我们再回过头来看看变量、函数是怎样存储和处理的、以及符号表是怎样构建的。符号表我们先来回顾一下符号表的定义:符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表...原创 2020-05-07 19:11:32 · 1356 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(4)- 语法分析1:EBNF和递归下降文法
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(4)- 语法分析1:EBNF和递归下降文法用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析项目github地...原创 2020-05-06 16:56:03 · 1702 阅读 · 1 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析项目github地址及源码:https://github.com/yunwei37/tryC用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计这一篇讲讲在tryC中词法分析器是怎...原创 2020-05-06 12:32:22 · 1514 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言项目github地址及源码:https://github.com/yunwei37/tryC需要了解的一些基本概念通常我们说的 “编译器” 是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,后...原创 2020-05-05 21:52:40 · 2123 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)项目github地址及源码:https://github.com/yunwei37/tryC一个小目标这一系列教程希望面向初学者,使用c语言手工实现一个简单的解释器来玩,不需要您掌握除了c语言以外的其他前置知识,也不需要您学习过编译原理的相关知识(当然如果能对简单的数据结构有所了解的话会更好,比如树、栈等)。不同于...原创 2020-05-05 20:35:00 · 2262 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-47 打印选课学生名单 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个...原创 2020-05-02 21:27:01 · 976 阅读 · 1 评论 -
PTA 数据结构与算法题目集(中文) 7-49 打印学生选课清单 (25分)题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x卡时间卡的好严格的…假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。输入格式:输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课...原创 2020-05-02 21:23:16 · 747 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-7 六度空间 (30分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”“六度空间”理论虽然得到广...原创 2020-05-02 21:19:58 · 564 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-44 基于词频的文件相似度 (30分)
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x思路倒排索引的结构如下:“关键词1”:“文档1”的ID,“文档2”的ID,…………。“关键词2”:带有此关键词的文档ID列表。从词的关键字,去找文档。题目实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为...原创 2020-05-02 21:12:27 · 850 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-14 电话聊天狂人 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:...原创 2020-05-02 21:04:42 · 556 阅读 · 0 评论 -
数据结构与算法题目集(中文)7-6 列出连通集 (25分)题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是...原创 2020-05-02 21:00:15 · 467 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文) 7-10 公路村村通 (30分) 最小生成树(kruskal算法)
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用的最小边权的边(可以直接快排或者algorithm的sort)。每次选择边权最小的边链接两个端点是kruskal的规则,并实时判断两个点之间有没有间接联通。PTA题目现有村落间道路的统计数...原创 2020-05-02 20:55:42 · 781 阅读 · 0 评论 -
数据结构与算法题目集(中文)7-20 表达式转换 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x题干算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右...原创 2020-05-02 20:48:55 · 435 阅读 · 0 评论 -
PAT (Top Level) Practice 1017 The Best Peak Shape (35 分) 题解
PTA top level 练习里面的一道题目...挺简单的,就是读懂题目然后注意一下边界条件。就是两个最大上升子序列,从正反两个方向进行,然后把结果叠加到一起就好啦。不算注释的话30行代码...可以说非常少了xIn many research areas, one important target of analyzing data is to find the best "peak s...原创 2019-06-07 00:59:16 · 706 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-4 是否同一棵二叉搜索树 (25 分) 题解
PTA 数据结构与算法题目集(中文)7-4 是否同一棵二叉搜索树 (25 分)寒假的时候自己学ds的时候写了一下的东西…思路大概就是,把输入的数组第一个元素作为子树的根,如果根不同,那么树肯定不相同;若根相同,比第一个元素小的元素就在它的左子树里面,比它大的就在它右子树里面,然后递归判断左右子树是否相同。实现看起来并不很好…不过也懒得重写了毕竟简单x题干给定一个插入序列就可以唯一确定...原创 2019-06-07 10:18:26 · 692 阅读 · 0 评论