![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
算法与数据结构学习,python
Rlyslata
python,java,ts,react
展开
-
搜索之散列表
散列表基础 散列表将数据映射到数据结构(数组、链表等)的相关位置,利用键与值之间的关系来达到快速搜索的目的,由于散列表将键与值联系起来,有时也称散列表为关联数组。散列表映射键值得过程叫做散列(hashing)。键与值之间的函数关系,被称为散列函数,散列地址address = F(key),一个简单的散列函数为address = key Mod lengthOfHashTable。良好的...原创 2020-02-07 22:46:01 · 236 阅读 · 0 评论 -
Python:搜索算法
线性搜索 线性搜索: 线性搜索可以应用于无序或有序序列,对于有序序列当搜索目标不在序列中时可以提前结束搜索,但时间复杂度为O(N)# array 为从大到小的有序序列def linear_search(array, target): for i in range(0, len(array)): if array[i] == ta...原创 2020-02-06 16:25:08 · 276 阅读 · 0 评论 -
Python:快速排序与归并排序
快速排序和归并排序及其区别 首先在预期情况下的快速排序和归并排序时间复杂度都是O(NlogN), 在空间复杂度上,没使用临时栈的快速排序在空间上优于归并排序。其次,在稳定性上来说,快速排序是不稳定的排序,归并排序与堆排序一样是稳定的排序,即排序后,比较值相同元素相对位置不变。如会议安排,通过比较会议优先级进行排序,若存在两个优先级相同的会议,但输入数据中前一个会议是下午开始,后一个是明...原创 2020-02-04 21:50:05 · 571 阅读 · 0 评论 -
Python:堆排序
摘要:建立堆 维护堆 堆排序 堆的介绍及建立堆、维护堆与堆排序算法思想 """堆排序:堆排序,实际就是建立堆、维护堆或者说添加元素、删除堆顶的过程。 堆的定义与特性: 堆是一颗空树或有序的完全二叉树(完全二叉树即叶子节点只出现在最后两层,且除了最后一层,其它层都是节点数量都是2**h个),堆 (最大堆)的任意节点值都大于...原创 2020-02-03 22:45:53 · 87 阅读 · 0 评论 -
Python:插入排序、选择排序与冒泡排序
在此之前,上篇博客介绍了关于插入排序与选择排序的栈的实现方法,而本文排序算法是基于数组(Python 列表) 插入排序 """ 算法思想: n为序列长度 将待排序序列分成两段,一段是已排序序列(初始长度为0),另一段是未排序序列(初始长度为n), (若待排序序列不为空,已排序序列长度初始也可以是1,这样可以少执行一次)...原创 2020-02-03 22:27:36 · 120 阅读 · 0 评论 -
Python:栈和队列(基于链表)
Python栈的实现 栈是一种以后进先出的顺序对对象进行添加和删除的数据结构。因为它的后进先出特性,也被称作LIFO表或LIFO(last in first out)栈只允许在栈顶进行操作,栈类一般会定义Pop()、Push()等操作。python实现代码如下:class Stack(CircularLinkedList.LinkedList): def __init...原创 2020-02-02 20:12:53 · 266 阅读 · 0 评论 -
Python:稀疏数组与三角数组
稀疏数组 稀疏数组应用场景: 当数组size很大而空间利用率很低时,应使用稀疏数组来存储 下面的实现的稀疏数组0行0列都没用来存储数据,留做存储row_size等其他数据用,一个稀疏数组由多个行链表组成,一个行链表由多个节点构成Python 实现如下:# 节点类class ArrayEntry: def __init__(self, columnNu...原创 2020-02-01 21:42:18 · 387 阅读 · 1 评论 -
Python 链表与环路检测算法
Python 链表 python 链表可以实现如下:# 链表节点类class Node: def __init__(self, value, Next): self.value = value self.next = Next# 链表类class LinkedList(Node): # 初始化链表 def __in...原创 2020-01-31 22:08:50 · 625 阅读 · 0 评论 -
算法与数据结构:数值算法
寻找素数因子 寻找一个数的素因子的最显而易见的办法是:尝试将这个数用比其小大于等于2的整数试除,将能整除的数(因子)保存起来,问题转化为求 这个数 /(除) 保存的因子 的素数因子。 Python实现如下:def splitPrime(number) -> list: # 素数因子 factor = [] i = ...原创 2020-01-29 22:06:45 · 331 阅读 · 0 评论