
python实现各种常用算法
jia666666
生活本无趣,有趣的是人
展开
-
python实现各种常用算法之数据结构(1)
python实现栈的操作栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。栈的介绍栈允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO, L...原创 2019-12-25 15:47:53 · 675 阅读 · 0 评论 -
python实现各种常用算法之数据结构(2)
python实现链表的操作链表的介绍链表(linked_list)是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。链表通过将链点 i 与其邻居链点 i+1 通过指针相关联,从索引 ...原创 2019-12-25 19:53:57 · 610 阅读 · 0 评论 -
python实现各种常用算法之数据结构(3)
python实现队列的操作-----------------.队列的介绍队列 (queue) 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列符合先进先出[FIFO]的原则。因为要排队的第一个项目,最终将是第一个要出列的项目,...原创 2019-12-25 20:44:28 · 540 阅读 · 0 评论 -
python实现各种常用算法之数据结构(4)
python实现树的操作树的介绍树 (tree) 是一种非常高效的非线性存储结构。树,可以很形象的理解,有根,有叶子,对应在数据结构中就是根节点、叶子节点,同一层的叶子叫兄弟节点,邻近不同层的叫父子节点,非常好理解。注:定义来自百度百科。其他概念解释二叉树就是每个节点都至多有二个子节点的树。满二叉树,就是除了叶子节点外,每个节点都有左右两个子节点,这种二叉树叫做满二叉树。...原创 2019-12-26 13:05:13 · 530 阅读 · 0 评论 -
python实现各种常用算法之数据结构(5)
python实现堆的操作堆的介绍堆 (heap) 是一种经过排序的完全二叉树,其中任一非叶子节点的值均不大于(或不小于)其左孩子和右孩子节点的值。堆,又被为优先队列(priority queue)。尽管名为优先队列,但堆并不是队列。最大堆 根结点的键值是所有堆结点键值中最大者最小堆 根结点的键值是所有堆结点键值中最小者。最大堆最小堆基本功能实现堆有两点需要了解,...原创 2019-12-26 17:38:02 · 485 阅读 · 0 评论 -
python实现各种常用算法之数据结构(6)
python实现图的操作图的介绍下面就通过一个例子来让大家快速地知道什么是图,如下图所示,G1 是有向图,G2 是无向图,每个数据元素称为顶点,在有向图中,从 V1 到 V3 称为一条弧,V3 到 V1 为另一条弧,V1 称为弧尾,V3 称为弧头,在无向图中,从 V1 到 V3 称为一条边。图中有 n个顶点,n(n-1)/2条边的无向图称为无向完全图,有n(n-1)条弧有向图...原创 2019-12-26 21:20:58 · 811 阅读 · 0 评论 -
python实现各种常用算法之数据结构(7)
python实现并查集的操作并查集的介绍并查集是一种数据结构,用于处理对 N 个元素的集合划分和判断是否属于同集合的问题。让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。注:定义来自百度百科。并查集的主要性质用集合...原创 2019-12-30 10:19:49 · 474 阅读 · 0 评论 -
python实现各种常用算法之数据结构(8)
python实现字典树的操作字典树,又称单词查找树,Trie 树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。注:定义来自百度百科。字典树的主要性质根节点不包含字符,除根节点外每一个节点都...原创 2019-12-30 10:48:55 · 435 阅读 · 0 评论 -
python实现各种常用算法之排序算法(9)
python实现排序算法(一)排序算法介绍所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在学习算法的时候,需要学会理解算法是如何实现的,掌握其算法的原理,以及如何判断算法的优越性。冒泡排序冒泡排序是...原创 2019-12-30 12:18:04 · 463 阅读 · 0 评论 -
python实现各种常用算法之排序算法(10)
python实现排序算法(二)希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,既可以达到线性排序的效率。但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。算法原理希尔排序基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排...原创 2019-12-30 13:14:08 · 466 阅读 · 1 评论 -
python实现各种常用算法之排序算法(11)
python实现排序算法(三)堆排序堆排序(Heapsort)的基本思想:是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。算法原理堆排序基本思想是:将初始待排序关键字序列(R1,R2…Rn)构建成大顶堆,此堆为初始的无序区。将堆顶元素 R[1]与最后一个元素 R[n]交换,此...原创 2019-12-30 17:26:23 · 463 阅读 · 0 评论 -
python实现各种常用算法之搜索算法(12)
python实现搜索算法(一)顺序搜索顺序搜索也称为线性搜索,属于无序查找算法。算法原理思路:从数据结构线性表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值 k 相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于 k 的结点,表示查找失败。适用性:顺序搜索适合于存储结构为顺序存储或链接存储的线性表。复杂度分析最坏复杂度: 从一个线性表依次查找对应项,...原创 2020-01-07 20:03:51 · 1970 阅读 · 0 评论 -
python实现各种常用算法之搜索算法(13)
python实现搜索算法(二)跳跃搜索跳跃搜索(Jump search),按照固定步长,从有序表的首项步进,直到匹配到符合目标元素的区间,然后在该区间使用线性搜索,找到目标元素的确切位置。跳跃搜索的思路如下:给定大小 n 的有序数组 a,目标元素为 x 和跳跃的步长 m ,然后搜索 a[0],a[1],a[2],a[3]…a[km]…一旦我们找到区间 a[km]< target &l...原创 2020-01-08 14:31:31 · 1303 阅读 · 0 评论