数据结构与算法
文章平均质量分 90
数据结构与算法理论与实战
不要着急刷题,先夯实基础,再找代表性的题目刷
哎呦-_-不错
读书太少而想太多
展开
-
数据结构与算法python—14.排序之九种排序详解
文章目录引言一、冒泡排序引言 排序这部分,会介绍9种基础的排序及其优化计数排序基数排序冒泡排序桶排序选择排序快速排序插入排序归并排序希尔排序一、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序总结来说,就是相邻对比交换位置,直至无需再交换。其动画演示为:原创 2021-05-15 23:56:14 · 617 阅读 · 6 评论 -
数据结构与算法python—13.堆及python实现与leetcode总结
文章目录一、优先队列详解1.优先队列的实现二、堆1.堆的两种实现1.1 基于链表的实现-跳表1.2 基于数组的实现-二叉堆1.2.1 二叉堆的基本框架1.2.2 向堆中添加元素和ShiftUp(上浮)1.2.3 取出堆中的最大元素和Shift Down(下沉)1.2.4 replace1.2.5 heapity1.2.6 测试过程1.2.7 堆实现的全部代码一、优先队列详解 什么是优先队列?普通队列:先进先出;后进后出。而优先队列,顾名思义,优先队列:出队顺序和入队顺序无关;和优先级相关。优先队列与普原创 2021-05-06 23:56:25 · 290 阅读 · 1 评论 -
数据结构与算法python—12.二叉搜索树及python实现与leetcode总结
文章目录一、什么是二叉搜索树?二、二叉搜索树的实现1.二叉搜索树的创建2.二叉搜索树添加元素3.二叉搜索树查找元素4.二叉搜索树的遍历5.二叉搜索树删除元素5.1要删除的节点没有孩子5.2 要删除的节点只有一个孩子5.3 要删除的节点有两个孩子一、什么是二叉搜索树? 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均原创 2021-05-04 21:44:30 · 414 阅读 · 2 评论 -
数据结构与算法python—11.查找及python实现与leetcode总结
文章目录一、查找(搜索)基础1.顺序查找2.二分查找3.插值查找4.斐波那契查找5.线性索引查找5.1 稠密索引5.2 分块索引5.3 倒排索引二、二分查找leetcode总结一、查找(搜索)基础 我们常用的搜索引擎的原理如下:下面介绍一些概念:查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(Search Table)由同一类型的数据元素((或记录)构成的集合关键字(Key)数据元素中某个数据项的值,又称为键值。主键原创 2021-05-04 21:44:18 · 417 阅读 · 8 评论 -
数据结构与算法python—10.二叉树题目leetcode总结
文章目录引言一、二叉树的性质相关题目二、二叉树遍历相关题目1.二叉树遍历题目最关键的逻辑记忆点引言 二叉树题目可大致分为:二叉树的性质相关题目二叉树的遍历相关题目路径和相关题目二叉树的构建相关题目一、二叉树的性质相关题目100. 相同的树101. 对称二叉树110. 平衡二叉树104. 二叉树的最大深度111. 二叉树的最小深度662. 二叉树最大宽度二、二叉树遍历相关题目1.二叉树遍历题目最关键的逻辑记忆点遍历顺序递归核心思维是假设左右孩子搞定了(搞定的方式就是调原创 2021-05-04 21:43:39 · 229 阅读 · 0 评论 -
数据结构与算法python—9.二叉树及python实现
文章目录引言一、树基础1.树的种类2.树的存储与表示二、二叉树1.二叉树的概念2.完全二叉树与满二叉树3.二叉树的性质4.二叉树的存储方式三、二叉树的基本操作1.树的创建—向二叉树插入节点2.二叉树的遍历2.1 深度优先遍历2.1.1 前序遍历2.1.2 中序遍历2.1.3 后序遍历2.1.4 总结2.2 广度优先遍历2.3 全部代码3.推导遍历结果引言 树可以像有序数组那样快速查找数据,也可以像链表那样快速插入数据。一、树基础 树是一种抽象数据类型(ADT)。它是由n(n>=1)个有限节原创 2021-04-26 21:16:41 · 872 阅读 · 2 评论 -
数据结构与算法python—8.递归及leetcode总结
文章目录一、什么是递归?二、递归的解题思路三、递归经典问题解答1. 哪些暴力递归可以继续优化?四、链表与递归一、什么是递归? 递归的本质是一种解决问题的思想:将规模大的问题转化为规模小的相似子问题来解决。函数调用本身是通过栈实现的,如果函数调用没有终止,将会一直消耗栈空间。最终,导致栈内存溢出(stack overflow),所以,递归必须有一个明确结束递归的条件。def sum(n): if n <= 1: return n else: return n + sum(n-1)原创 2021-04-25 23:31:54 · 263 阅读 · 0 评论 -
数据结构与算法python—7.链表题目leetcode总结
文章目录一、引言二、链表的基本操作类题目1.删除链表中的节点203. 移除链表元素237. 删除链表中的节点2.分隔链表86. 分隔链表3.交换链表24. 两两交换链表中的节点4.旋转链表61. 旋转链表143. 重排链表三、链表反转类题目206. 反转链表92. 反转链表 II25. K 个一组翻转链表一、引言 链表题目可以归纳为链表的基本操作类题目、反转类题目、双指针问题、数学问题。暂未包括排序类题目,之后会补充。数据结构与算法python—6.链表及python实现碰到链表类题目,可以画图原创 2021-04-24 16:29:33 · 249 阅读 · 0 评论 -
数据结构与算法python—6.链表及python实现
文章目录一、链表介绍1.为什么需要链表?2.什么是链表?3.数组与链表对比二、单链表1.什么是单链表?2.单链表python实现2.1 节点的实现2.2 is_empty() 链表是否为空2.3 length() 链表长度2.4 add(item) 链表头部添加元素2.5 append(item) 链表尾部添加元素2.6 insert(pos, item) 指定位置添加元素2.7 remove(item) 删除节点2.8 removeIndex(index)删除某一索引的元素2.9 search(item)原创 2021-04-22 20:51:51 · 396 阅读 · 0 评论 -
数据结构与算法python—5.队列及python实现与leetcode总结
文章目录一、队列二、队列python实现三、循环队列四、循环队列python实现五、双端队列六、双端队列python实现七、队列的应用一、队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。通俗来讲,队列也是一种线性结构,相比数组,队列对应的操作是数组的子集,只能从一端(队尾)添加元素,只能从另一端(队首)取出元素。队列是一种先进先出(First in first out (FIFO))的数据结构。二、队列python实现 队列也可以用顺序表或者链表实现。队列主要原创 2021-04-21 22:49:54 · 259 阅读 · 2 评论 -
数据结构与算法python—4.栈及python实现与leetcode总结
文章目录一、什么是栈?二、栈的实现三、栈的应用1.括号匹配20. 有效的括号2. 四则表达式求值3.设计一个有getMin功能的栈一、什么是栈? 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素。栈是限定仅在表尾进行插入与删除操作的线性表。通俗理解来说,栈也是一种线性结构,相比数组,栈对应的操作是数组的子集,只能从一端添加元素,也只能从同一端取出元素把允许添加和删除的一端称为栈顶(top) ,另一端称为栈底(bottom)。栈是一种后进先出的数据结构。思考:原创 2021-04-21 17:30:06 · 256 阅读 · 0 评论 -
数据结构与算法python—3.数组(顺序表)双指针Leetcode刷题总结
文章目录一、双指针介绍二、相向双指针1. n sum类型题1.1 两数之和—two sum一、双指针介绍 所谓双指针算法,就是指的是在遍历的过程中,不是普通的使用单个指针进行循环访问,而是使用两个相同方向或者相反方向的指针进行扫描,从而达到相应的目的。双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算,降低时间复杂度。根据问题类型,双指针算法可分为:相向双指针—对撞指针同向双指针—快慢指针同向双指针—滑动窗口分离双指针二、相向双指针 所谓相向双指针是指在有序数组中,原创 2021-04-20 20:18:13 · 352 阅读 · 0 评论 -
数据结构与算法python—2.顺序表(数组)以及python实现
文章目录1.顺序表的概念1.线性表2.顺序表的基本形式例子3.顺序表的结构和实现1.顺序表的结构2.顺序表的两种基本实现方式例子3.元素存储区的扩充4.元素存储区的替换例子4顺序表的操作1.增加元素2.删除元素5.python中的顺序表1.list的基本技术实现1.顺序表的概念1.线性表线性表:将这样一组元素看成一个序列,用元素在序列里的位置和顺序,表示数据之间的某种关系根据线性表的实际存储方式,分为两种实现模型:顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表原创 2020-06-30 17:53:31 · 752 阅读 · 0 评论 -
数据结构与算法python—1.数据结构与算法入门
文章目录1.算法引入2.算法的提出1)算法的概念2)算法五大特性3.算法效率衡量1)“大O计法”2)时间复杂度1)最坏时间复杂度2)**时间复杂度的几条基本运算规则**:3)常见时间复杂度4.python内置类型性能分析1.timeit模块2.list性能操作测试5.数据结构1.概念2.算法与数据结构的区别3.抽象数据类型1.算法引入如果 a+b+c=1000,且 a^2+b ^2 =c ^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?第一次尝试#枚举法import timest原创 2020-06-29 22:43:44 · 542 阅读 · 1 评论