数据结构
文章平均质量分 71
Lisa_Ren_123
这个作者很懒,什么都没留下…
展开
-
二叉树知识整理:分类、遍历(前序后序中序层次)
二叉树(Binary tree)是每个节点最多只有两个分支的树结构。分别为”左子树”和”右子树”。 常用的定义: 根节点:只有子节点,没有父节点。也就是只有往外的箭头。一棵树最多只有一个根节点。 叶节点:与根节点刚好相反,只有父节点,没有子节点。 左子树与右子树:以根节点“2”为例,它的左子树是“7”和“7”的所有分支(包括了7、2、6、5、11)。同理右子树。 树的深度:从根节点到叶节...原创 2018-06-13 20:29:42 · 592 阅读 · 0 评论 -
KMP字符串查找算法的 Python实现
首先是next数组的获取,用了一个递归的方法,时间复杂度为O(m),m为模式串的长度def GetNext(p): n = len(p) next = [-1] * n k = -1 j = 0 while(j < n - 1): if k == -1 or p[k] == p[j]: k += 1 ...原创 2018-06-27 13:20:31 · 301 阅读 · 0 评论 -
二分查找 python实现
传统的顺序查找就是一个一个的比,时间复杂度为O(n) 二分查找是很基本的查找方式,前提是待查找的列表是有序的,所以每次都跟中间的那个数比较。 但是如果数据较大,二分查找不一定好用,因为需要先排序,有可能排序需要的成本更高。下面是二分查找的python实现方法。def binarySearch(alist, item): first = 0 last = len(alis...原创 2018-06-29 23:11:32 · 554 阅读 · 0 评论 -
python实现堆插入、删除、创建
提到二叉堆,必须要说一下优先队列 队列的概念比较简单,就是先进先出。但是优先队列的话,算是队列的一个变种,然而,在优先级队列中,队列中的项目的逻辑顺序由它们的优先级确定。最高优先级项在队列的前面,最低优先级的项在后面。因此,当你将项排入优先级队列时,新项可能会一直移动到前面。我们将在下一章中研究一些图算法看到优先级队列是有用的数据结构。 二叉堆是一组能够用堆,有序的完全二叉树排序的元素,,并在...原创 2018-07-23 20:53:09 · 3376 阅读 · 0 评论 -
八大排序算法介绍分析及其python实现
方便起见,一下所有代码与解释都默认升序排列。 1.冒泡排序: 冒泡排序是一种很简单但是效率不高的方式,要多次遍历列表。 第一趟:两两比较a[i] > a[i+1]时交换它们的位置,这样遍历完整个序列就能选出将最大值放在最后。如图。 第二趟:除去最大值,选出剩余序列中的最大值(原序列的第二大)放在倒数第二个位置。 … 第n-1趟 冒泡排序思想比较简单2.选择排序 3.插...原创 2018-07-13 14:10:08 · 529 阅读 · 1 评论