数据结构基础
文章平均质量分 88
沉迷单车的追风少年
CSDN博客专家,CSDN商业化专家,官方内容合作伙伴,官方认证“人工智能领域优质创作者”,入选2023年中国开发者影响力年度榜单。
代表专栏《Diffusion Models与深度学习》、《手把手写深度学习》、《深度学习-计算机视觉》、《手把手写C++服务器》等。
展开
-
STL——stack栈(解决逆波兰算法)
逆波兰算法: 假定给定一个只 包含 加、减、乘、除,和括号的算术表达式,你怎么编写程序计算出其结果? 问题是:在表达式中,括号,以及括号的多层嵌套 的使用,运算符的优先级不同等因素,使得一个算术表达式在计算时,运算顺序往往因表达式的内容而定,不具规律性。 这样很难编写出统一的计算指令。 使用逆波兰算法可以轻松解决这个问题。他的核心思想是将普通的中缀表达式转换为后缀表达式。 什么是中缀表达式?...原创 2019-07-10 18:06:54 · 402 阅读 · 0 评论 -
STL——string使用总结
STL用于处理可变长度的字符串处理,具体用法如下: STL string使用示例 操作接口实例 说明 s.empty() 如果s为空,则返回true;否则返回false s.size() 返回s中字符的个数 s[n] 返回s中位置为n的字符,注意从0开始计算 s1+=s2 或 s1=s1+s2 将上s2追加到s1后面 s.insert(p...原创 2019-09-28 20:53:22 · 249 阅读 · 0 评论 -
常用“树”的基础算法——有根树、二叉树表达、树的遍历、树的内层和
目录 1. 有根树表达 2. 二叉树表达 3. 树的遍历 1. 有根树表达 使用左子右兄弟法(left-child right-sibling representation)表示树,各个结点具有一以下信息: 结点u的父结点 结点u的最左侧结点 结点u的右侧紧邻的兄弟结点 //有根数的表达 #include <iostream> using namespac...原创 2019-09-07 20:48:14 · 518 阅读 · 2 评论 -
STL排序总结与std::sort()底层原理
目录 排序分类 分类 外部排序方法:数据内外存交换和数据归并 STL排序 STL比较函数 排序分类 分类 内部排序 将排序数一次性装入内存 外部排序 相反。速度慢 外部排序用于排序文件很大,无法将整个文件装入内存,只能将文件装入外存上。 外部排序方法:数据内外存交换和数据归并 将待归并记录分成若干长度t的段R1,R2…… 利用上述内部排序方法,对每...原创 2019-09-21 22:08:47 · 1750 阅读 · 0 评论 -
基础算法——冒泡排序
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序对{\displaystyle n}个项目需要O({\displaystyle n^{2}})的比较...原创 2019-08-17 11:50:34 · 617 阅读 · 0 评论 -
基础算法——插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 移动示意图如下: C++程序如下: #in...原创 2019-08-16 22:58:40 · 141 阅读 · 0 评论 -
数据结构基础——list操作双向链表
list和vector极为相似,不同之处是list可以元素在插入和删除操作时算法复杂度只需要O(1)即可,vector见:https://blog.csdn.net/qq_41895747/article/details/95381008 与vector比较: vector擅长对元素的随机访问,但付出的代价是在其任意位置插入或删除元素,都比在尾部插入或删除的开销大。 list可以在任意位置快...原创 2019-07-10 22:23:20 · 254 阅读 · 0 评论 -
vector动态数组和顺序性容器初始化的五种方式
使用STL的vector实现动态数组,示例功能如下: 函数名 功能 push_back(x) 在向量末尾添加元素 pop_back(x) 删除向量最后一个元素 begin() 返回指向向量开头的迭代器 end() 返回指向向量末尾的迭代器 insert(p,x) 在向量p位置处插入元素x erase(p) 删除向量...原创 2019-07-10 21:16:08 · 399 阅读 · 0 评论 -
queue队列、deque双端队列和priority_queue优先队列
在C++STL中,使用#include <queue>使用队列,成员函数示例如下: 函数名 功能 size() 返回队列中元素 front() 返回队列中头元素 pop() 从队列中取出并删除 push() 从队列中添加元素 empty() 队列为空时返回true 示例代码,注意需要事先声明队列 #inc...原创 2019-07-10 20:55:29 · 309 阅读 · 0 评论 -
set与map使用总结
管理元素集合的STL容器分类: 序列式容器:有顺序的集合。序列式容器会将添加的元素位于特定的位置,该位置由插入的时间和地点确定,与元素本身的值无关。如vector、list等。 关联式容器:经过排序的集合。关联式容器会根据特定的排序标准来决定要添加元素的位置。如set、map。 set集合:根据元素进行排序的集合,所插入的元素在集合中唯一,不存在重复元素。 set由二叉搜索树实现,而且对树进...原创 2019-09-13 23:43:55 · 410 阅读 · 0 评论