数据结构与算法
Jessli&666
就想用代码改变世界一次
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分法查找
注意: 二分法查找一定是有序的递归的二分法查找def dg_find(a, item): # 终止条件,当列表的长度为0,表示没有找到元素不再递归 if len(a) == 0: return False # 找中间位置 mid = len(a)//2 # 判断中间位置是否是要查找的值,如果是,返回True if a[mid] == item: return True # 中间值大于item, 在中间值左边的数据继原创 2021-02-27 18:32:50 · 140 阅读 · 0 评论 -
二叉树
二叉树二叉树的基本概念二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;性质4: 具有n个结点的完全二叉树的深度必为 log2(n+1)性质5: 对完全二叉原创 2021-02-27 18:24:31 · 171 阅读 · 0 评论 -
双向链表
双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。操作is_empty() 链表是否为空length() 链表长度travel() 遍历链表add(item) 链表头部添加append(item) 链表尾部添加insert(pos, item) 指定位置添加remove(item) 删除节点search(item) 查找节点是否存在实现由于单原创 2021-02-27 17:16:54 · 168 阅读 · 0 评论 -
单向循环链表
单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。操作is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历add(item) 在头部添加一个节点append(item) 在尾部添加一个节点insert(pos, item) 在指定位置pos添加节点remove(item) 删除一个节点search(item) 查找节点是否存在实现# 创建节点类class Node: def原创 2021-02-27 16:20:20 · 220 阅读 · 0 评论 -
单向链表
单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。链接域next用来存放下一个节点的位置(python中的标识)变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class SingleNode(): # 初始化方法 def __init__(self, item): # item:存放数原创 2021-02-27 14:12:26 · 372 阅读 · 0 评论 -
Python中常用的排序算法
Python中的排序算法冒泡排序: [8, 9, 7, 6, 5, 4, 3, 2, 1]第1趟 遍历前: [8,9,7,6,5,4,3,2,1] => [8,7,6,5,4,3,2,1, 9] 遍历后第2趟 遍历前: [8,7,6,5,4,3,2,1, 9] => [7,6,5,4,3,2,1, 8,9] 遍历后第3趟 遍历前: [7,6,5,4,3,2,1, 8,9] => [6,5,4,3,2,1, 7,8,9] 遍历后第4趟 遍历前: [6原创 2020-12-10 19:23:39 · 409 阅读 · 0 评论
分享