自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 python实现贪心算法

贪心算法在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明)。最优装载问题问题: 有一天海盗们截获了一艘装满各种各样古董的货船,每一件都价值连城,一旦打碎就是去了价值,海盗船载重量为C,每件固定的重量为wi,海盗们该如何尽可能装载最多数量的古董呢?解决思路:古董的种量清单:船载重量固定为C,只要每次选择重量最小的古董,直到不能再装为止,这样装载的古董数量最大, 这就是贪心策略;把古董按重量从小到大

2020-06-21 21:14:48 669

原创 Python实现顺序查找和二分查找算法

查找表查找表是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查找表。一般对于查找表有以下几种操作:在查找表中查找某个具体的数据元素;在查找表中插入数据元素;从查找表中删除数据元素;静态查找表与动态查找表在查找表中只做查找操作,而不改动表中数据元素,称此类查找表为静态查找表;在查找表中做查找操作的同时进行插入数据或者删除数据的操作,称此类表为动态查找表。关键字关键字又细分为主关键字和次关键字。若某个关键字可以唯一地识别一个数据元素时,称这个关键字为主关键字,例如

2020-06-21 21:08:13 750

原创 Python实现排序算法

排序算法常用术语稳定与不稳定稳定: 如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定: 如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序与外排序内排序: 所有排序操作都在内存中完成;外排序: 由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;排序算法的性能三大影响因素1 . 时间性能(时间复杂度): 一个算法执行所耗费的时间。2. 辅助空间 (空间复杂度): 运行完一个程序所需内存的大小。3. 算法的复杂性 : 算法本身

2020-06-21 20:59:05 392

原创 Python实现八皇后问题(详细注释)

回溯法在了解八皇后问题之前我们先了解什么是回溯法,因为八皇后问题是回溯法的一个经典算法习题,也是八皇后问题用到的主要算法。根据百度百科解释:回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。举个集合小例子:列举集合 {1,2,3} 中所有子集的问题使用回溯法。从集合的开头元素开始,对每个元素都有两种操作,直到集合最

2020-06-19 19:46:16 22342 4

原创 平衡二叉树(AVL)

一、什么是平衡二叉树?平衡二叉树: 又称为AVL树 ,它或者是一棵空树,或者是具备以下性质的二叉排序树:每棵子树中的左子树和右子树的深度差(平衡因子)的绝对值不能超过1;二叉树中每棵子树都要求是平衡二叉树;一棵AVL树必须满足以下条件:条件一:必须是二叉排序树条件二:每个节点的左子树和右子树的高度差的绝对值至多为1。也就是说,平衡二叉树的前提是它是一棵二叉排序树平衡二叉树的查找、插入、删除操作在平均和最坏的情况下都是O(logn),这得益于它时刻维护着二叉树的平衡。二、平衡二叉树的

2020-06-19 19:14:39 1926

原创 Python实现二叉排序树

一、什么是二叉排序树?二叉排序树要么是一棵空二叉树,要么是具有如下特点的二叉树:二叉排序树中,如果其根结点有左子树,那么左子树上所有节点的值都小于根结点的值;二叉排序树中,如果其根结点有右子树,那么右子树上所有节点的值都大于根结点的值;二叉排序树的左右子树也要求都是二叉排序树。如下图所示:二、二叉排序树的Python实现二叉排序树的插入插入: 从根结点开始逐个与关键字进行比较,小于根结点去左边,大于根结点去右边,碰到子树为空的情况指向关键字。二叉排序树的查找查找: 对比节点的值和关

2020-06-15 13:20:30 1637

原创 二叉树练习题及解析

1、 某二叉树的前序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。答:高度等于其节点数解析:前序遍历顺序是‘M-L-R’,后序遍历的顺序是‘L-R-M’,其中L-R的相对位置不发生变化,变化的是M的位置。题目指出二叉树的先序序列和后序序列结果正好相反:当二叉树只有一个节点时,只有M,L和R为空,满足条件当二叉树为空时,M、L和R均为空,满足条件当二叉树任一节点无左孩子时,L为空,前序遍历为M-R,后序遍历为R-M,结果正好相反,满足条件当二叉树任一节点无右孩子时,R为空,前序遍

2020-06-14 14:06:51 9399 1

原创 Python二叉树的实现

树与二叉树在了解二叉树之前,我们要先了解树的一些概念,方便我们对二叉树的理解。什么是树?树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不

2020-06-13 14:36:48 1751

原创 Python链表小练习---删除链表的倒数第K个节点和旋转链表

1、删除链表的倒数第K个节点题目描述:给定一个链表: 1->2->3->4->5, 和 k = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解题思路:使用两个指针p,q,刚开始两个指针指向链表的头部让q指针向后移动k个节点,p和q节点之间的举例保持为kp和q同时向后移动,直到q.next = None,此时p节点为删除节点的前一个节点删除倒数第k个节点,p.next = p.next.next实现代码如下:from Sing

2020-06-12 13:05:54 608

原创 Python实现双向链表的封装

什么是双向链表和单向链表不同的是,双向链表每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。双向链表的操作和代码实现前面先实现节点的封装和链表的封装以及链表是否为空、链表长度、遍历链表的代码:class Node(object): """链表节点的实现""" def __init__(self, element): """创建一个节点""" self.elemen

2020-06-12 00:12:46 322

原创 Python实现单向循环链表的封装

单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。单向循环链表的操作和代码实现单向循环链表的操作和单向链表的一样,只不过末尾节点的next指向了head,进行有些操作时的判断条件发生了改变。还是和之前一样,我们先进行节点的声明和链表长度,是否为空的代码实现:class Node(object): """节点封装""" def __init__(self, element): self.element

2020-06-12 00:00:05 305

原创 Python实现单向链表的封装

首先我们先了解顺序表和链表的概念,为什么要使用链表。顺序表和链表顺序表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时需要进行数据搬迁,所以使用起来不是很灵活。链表链表(Linked List) 是一种常见的基础数据结构,是一只种类线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。顺序表和链表的内存分布单向链表单向链表也叫单链表,每个节点包含两个

2020-06-11 23:46:51 325

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除