![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法(python)
文章平均质量分 51
Navajo_c
我给你的光是明是暗
展开
-
数据结构与算法(python版)(十七)——贪心算法(未完)
数据结构与算法(python版)(十七)贪心算法原创 2021-05-06 13:00:18 · 107 阅读 · 0 评论 -
数据结构与算法(python版)(十六)——动态规划(未完)
数据结构与算法(python版)(十六)动态规划通过把原问题分解为相对简单的子问题的方式求解复杂的问题的方法。动态规划常适用于有重叠子问题和最优子结构性质的问题基本思想若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。通常许多子问题非常相似,因此动态规划法可以试图仅解决每个子问题一次,从而减少重复计算过程;一旦某个给定子问题的解已经算出,则将其记忆化存储起来,以便计算过程中同一子问题的求解。这种做法在重复子问题数目关于输入的规模呈指数增长时特别有效分治与动态规原创 2021-05-06 00:18:06 · 93 阅读 · 0 评论 -
数据结构与算法(python版)(十五)——树
数据结构与算法(python版)(十五)1、树的概念树是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它由n(n>=1)个有限节点组成一个具有层次关系的集合。树的特点:每个节点有零个或多个子节点没有父节点的节点称为根节点每一个非根节点有且只有一个父节点除根节点外,每个子节点可以分为多个不相交的子树1.1 树的术语节点的度:一个节点含有的子树的个数称为该节点的度树的度:一棵树中,最大的节点的度叶节点或终端节点:度为零的节点父原创 2021-04-28 19:31:25 · 160 阅读 · 1 评论 -
数据结构与算法(python版)(十四)——二分查找
数据结构与算法(python版)(十四)1、二分查找二分查找又称折半查找,优点是次数少,查找速度快,平均性能好;缺点是要求待查表为有序表,且插入删除困难,因此,折半查找法不适用于经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,便查找成功,或直到子表不存在为止原创 2021-04-28 14:44:52 · 107 阅读 · 0 评论 -
数据结构与算法(python版)(十三)——归并排序
数据结构与算法(python版)(十三)1、归并排序归并排序是采用分治法的一个非常典型的应用,归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一步,再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。2、归并排序的实现#关键代码#while left_pointer < len(left_li) and right_pointer < len(right_l原创 2021-04-27 19:37:06 · 119 阅读 · 0 评论 -
数据结构与算法(python版)(十二)——希尔排序
数据结构与算法(python版)(十二)1、希尔排序原创 2021-04-27 15:38:23 · 105 阅读 · 0 评论 -
数据结构与算法(python版)(十一)——快速排序
数据结构与算法(python版)(十一)1、快速排序(quick sort)快速排序又称划分交换排序(partition-exchange sort),通过一次排序将要排序的数据分割为独立的两部分,其中一部分的所有数据比另一部分所有数据都要小,然后再按此方法对分割出的两部分数据进行快速排序,整个排序过程可以递归进行,以到达有序状态。从数列中挑出一个“基准”元素重新排序数列,比“基准数”小的所有元素都摆放到“基准数”的左侧,比“基准数”大的所有元素都摆在“基准数”的右侧,此操作完成后,“基准数”就处原创 2021-04-25 20:58:57 · 135 阅读 · 0 评论 -
数据结构与算法(python版)(十)——插入排序
数据结构与算法(python版)(十)1、插入排序(Insertion sort)通过构建左侧有序序列,对未排序数据,在已排序元素中从后向前扫描,找到相应位置并插入。插入排序的实现时,在从后往前额扫描过程中需要反复把已排序元素逐步向后挪位,为新元素提供空间。2、插入排序的实现#插入排序#关键代码#if alist[i] < alist[i-1]:# #当前元素与前一元素进行比较,若当前元素小,则与前一元素交换位置# alist[i], alist[i-1] = alis原创 2021-04-25 17:45:04 · 81 阅读 · 0 评论 -
数据结构与算法(python版)(九)——选择排序
数据结构与算法(python版)(九)1、选择排序(select sort)首先在未排序序列中找到最小元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾,以此往复,直到所有元素均排序完毕选择排序的主要优点与数据移动有关,如果某个元素位于正确的最终位置上,则不会被移动,选择排序每交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的列表进行排序总共进行至多n-1次交换,在所有完全依靠交换移动元素的排序方法中,选择排序是非常好的方法假设第一原创 2021-04-23 19:33:58 · 139 阅读 · 0 评论 -
数据结构与算法(python版)(八)——冒泡排序
数据结构与算法(python版)(八)*排序算法(Sorting Algorithm)的稳定性稳定排序算法会让原本有相等值的记录维持相对次序;不稳定排序算法可能会在相等的值中改变记录的相对次序。1、冒泡排序(Bubble sort)重复地遍历要排序的数列,一次比较两个元素,如果两个元素顺序错误则进行交换位置,遍历数列的工作重复进行直到不需要再进行交换。越大的元素会经过交换“浮”到数列的顶端。##2、冒泡排序算法运作比较相邻两个元素,如果第一个比第二个大,则交换两者对每一对相邻元素做同样的工原创 2021-04-23 16:48:15 · 97 阅读 · 0 评论 -
数据结构与算法(python版)(七)——队列
数据结构与算法(python版)(七)1、队列队列是一种先进先出(FIFO, First In First Out)的线性表,允许插入的一端叫队尾,允许删除的一端叫队头,不允许在中间部位进行操作。2、队列的操作① Queue() 创建一个空队列② enqueue(item) 添加新的元素item到队列③ dequeue() 从头部删除一个元素④ is_empty() 判断队列是否为空⑤ size() 返原创 2021-04-23 00:51:33 · 159 阅读 · 0 评论 -
数据结构与算法(python版)(六)——栈
数据结构与算法(python版)(六)1、栈类似一种“容器”,可以存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(栈顶top)进行加入(push)数据和输出(pop)数据的运算。没有了位置概念,保证任何时候可以访问、删除元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。栈按照后进先出(LIFO,Last in First Out)的原理运作。2、栈结构的操作① Stack() 创建一个新的空栈② push(item) 添加新的元素item到栈顶原创 2021-04-22 23:55:53 · 120 阅读 · 0 评论 -
数据结构与算法(python版)(五)——单向循环链表
数据结构与算法(python版)(五)1、单向循环链表链表的最后一个节点的next域不再为None,而是指向链表的头节点2、单向循环链表的操作① is_empty() 链表是否为空② length() 链表长度③ travel() 遍历链表④ add(item) 头部添加元素⑤ append(item) 尾部添加元素⑥ insert(pos, item) 指定位置添加元素⑦ remove(item)原创 2021-04-21 23:34:34 · 121 阅读 · 0 评论 -
数据结构与算法(python版)(四)——双向链表
数据结构与算法(python版)(四)1、双向链表每个节点有两个链接:一个指向前一个节点,当前节点为第一个节点时,指向空值;而另一个指向下一个节点,当前节点为最后一个节点时,指向空值。2、双向链表的操作① is_empty() 链表是否为空② length() 链表长度③ travel() 遍历链表④ add(item) 头部添加元素⑤ append(item) 尾部添加元素⑥ insert(pos, it原创 2021-04-19 20:50:15 · 118 阅读 · 0 评论 -
数据结构与算法(python版)(三)——单链表
数据结构与算法(python版)(三)1、链表在每一个节点里存放下一个节点的位置信息,可以充分利用计算机内存空间,实现灵活的内存动态管理。2、单项链表每个节点包含两个域,一个信息域(元素)和一个链接域(指向下一个节点),最后一个节点的链接域则指向一个空值。*类:产生一个数据结构时,要将关于这个数据结构以及它所支持的操作放在一起形成一个整体。3、单链表的操作① is_empty() 链表是否为空② length() 链表长度③ travel原创 2021-04-18 21:27:29 · 145 阅读 · 2 评论 -
数据结构与算法(python版)(二)——顺序表
数据结构与算法(python版)(二)1、顺序表数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的小标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址 L0_00 加上逻辑地址与存储单元大小的乘积计算而得。2、元素外置的顺序表如果元素大小不统一,将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息,由于每个链接所需存储量相同,可以计算出元素链接的存储位置,继而顺着链接找到实际存储的数据元素。3、顺序表的结构一个顺序表的完整信息包括两个部原创 2021-04-17 16:44:14 · 151 阅读 · 0 评论 -
数据结构与算法(python版)(一)
数据结构与算法(python版)(一)1、数据结构一组数据如何保持及组织形式是怎样(对基本数据类型的封装)2、程序 = 数据结构 + 算法3、抽象数据类型(Abstract Data Type)一个数学模型及定义在此数学模型上的一组操作,即把数据类型和数据类型上的运算捆在一起,进行封装。...原创 2021-04-17 09:37:49 · 112 阅读 · 0 评论