数据结构与算法
栗子_UCAS
更博不分早晚,爱你不分昼夜?呕!呕!
展开
-
数据结构与算法(十):二叉树的python实现
二叉树的创建二叉树的实现类似于链表的实现。有节点类和树类。实现如下:节点类class Node(object): def __init__(self,item): self.elem = item self.lchild = None self.rchild = None树类class Tree(object): def ...原创 2019-03-14 10:04:36 · 312 阅读 · 0 评论 -
数据结构与算法(九):搜索-二分查找的python实现
二分查找搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找...原创 2019-03-13 17:30:32 · 274 阅读 · 0 评论 -
数据结构与算法(八):归并排序的python实现
归并排序原创 2019-03-13 15:57:11 · 187 阅读 · 0 评论 -
数据结构与算法(七):希尔排序的python实现
希尔排序希尔排序是改进的一种插入排序。和插入排序有些不同的是,加入了一个gap,这个gap有规律地变化,使得原list分成不同的子序列,分别对子序列进行插入排序。具体实现如下:def shell_sort(alist): '''希尔排序(升序)''' n = len(alist) gap = n//2 #python3取整 while gap>=1:...原创 2019-03-13 10:30:30 · 176 阅读 · 0 评论 -
数据结构与算法(六):快速排序的python实现
快速排序def quick_sort(alist,first,last): '''快速排序(升序)''' if first >= last: return mid_value = alist[first ] low = first #注意low和high是下标。 high = last while low<high: ...原创 2019-03-12 21:53:26 · 149 阅读 · 0 评论 -
数据结构与算法(五):插入排序的python实现
插入排序插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。也就是每次都把未排序的序列中的第一个,插入已经排序的序列的正确位置(注意序列是升序还是降序)。可以实现最优复杂度的写法:def insert_sort(alist): ...原创 2019-03-12 09:45:18 · 157 阅读 · 0 评论 -
数据结构与算法(四):选择排序的python实现
选择排序选择排序工作步骤如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。实现:def select_sort(alist): '''选择排序''' for j in range(0,len(alist)-1): min_...原创 2019-03-11 17:38:03 · 197 阅读 · 0 评论 -
数据结构与算法(三):冒泡排序的python实现
冒泡排序冒泡排序最符合咱们思维上的排序方式。冒泡排序算法步骤:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。接下来,这个算法用顺序表实现,毕竟用链表有些复杂。...原创 2019-03-11 16:21:56 · 183 阅读 · 0 评论 -
数据结构与算法(二):栈和队列的python实现
栈栈和队列都可以使用顺序表实现,为了节约时间我们使用python里的list实现。class Stack(object): """栈""" def __init__(self): self.items = [] def is_empty(self): """判断是否为空""" return self.items原创 2019-03-07 10:29:33 · 162 阅读 · 0 评论 -
数据结构与算法(一):链表的python实现
单向链表(04)单项链表是链表里最简单的一种形式。由于知识点在各种书籍都有,本人就只对代码进行逐行解释,建议新手阅读者可以结合理论进行阅读。首先构造节点:class SingleNode(object): """单链表的结点"""原创 2019-03-07 00:15:25 · 286 阅读 · 0 评论 -
数据结构与算法(十一):迭代递归与动态规划笔记
今天看了邓俊辉老师的视频课,介绍了迭代与递归的两种策略:减而治之和分而治之。以及两种分析技巧:递归跟踪法和递推方程法。原创 2019-03-23 20:11:46 · 258 阅读 · 0 评论