文章分类 -  算法和数据结构

摘要:一、二叉树简介 二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。通常其子树被称为左子树(Left subtree) 和 右子树(Right subtree)。每棵树的第一个结点叫头结点或根节点,一个节点拥有子树的数目称为节点的度。 逻辑上二叉树有五种基本 阅读全文
posted @ 2022-07-05 15:32 Liang-ml 阅读(163) 评论(0) 推荐(0) 编辑
摘要:经典问题:判断一个链表是否有环。 可以使用哈希表来解决该问题,即将链表每个结点的指针存入哈希表,出现重复的地址即说明链表中存在环。 python代码如下 时间复杂度O(N) 空间复杂度O(N) def hasCycle(head): cur = head if cur is None: return 阅读全文
posted @ 2022-07-01 16:44 Liang-ml 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一、链表简介 链表是一种逻辑顺序上连续、存储空间上不连续、不顺序的线性数据结构,其逻辑顺序由链表的指针依次链接实现。 Head Tail 链表由一个个结点组成,每个节点由存储数据的数据域和存储指向下一结点指针的指针域组成。 定义链表的结点: 1 class Node: 2 def __init__( 阅读全文
posted @ 2022-06-29 11:23 Liang-ml 阅读(206) 评论(0) 推荐(0) 编辑
摘要:插入排序(Insertion sort)是一种简单直观的排序算法,其工作原理如下 其工作原理是通过构建有序序列,对于未排序的数据,在已排序序列中从后向前比较,找到相应位置并插入。 时间复杂度 O(N2) ,但是根据输入数据的情况不同,其时间复杂度也不同,比如序列已经是一个排序好的序列,算法仅需遍历一 阅读全文
posted @ 2022-06-20 21:20 Liang-ml 阅读(18) 评论(0) 推荐(0) 编辑
摘要:冒泡排序是一种简单直观的排序算法,其算法执行流程如下 冒泡排序通过重复的访问待排序序列,一次比较两个元素,按照既定的顺序决定交换两个元素的位置,每次走访待排序序列会确定一个元素的位置,再在剩余的序列重复进行操作, 称其为冒泡排序的原因是最小(大)的元素会经过交换浮至序列末尾。 时间复杂度 O(N2) 阅读全文
posted @ 2022-06-20 19:50 Liang-ml 阅读(20) 评论(0) 推荐(0) 编辑
摘要:选择排序(Selection sort)是一种简单直观的排序算法,其工作原理如下 首先在未排序序列中找到最小(大)元素,与序列起始位置元素交换位置,再从剩下的序列中继续寻找最小(大)元素,与已排序序列的后一位元素交换位置,以此类推,直至排序完毕 时间复杂度 O(N2):当N个数进行排序时,将进行T= 阅读全文
posted @ 2022-06-20 19:39 Liang-ml 阅读(31) 评论(0) 推荐(0) 编辑
摘要:算法的复杂性体现在运行该算法时计算机所需资源的多少,计算机资源最重要的是时间和空间,故算法复杂度分为时间复杂度和空间复杂度。 一、时间复杂度 一个算法中的语句执行次数称为语句频度或时间频度,记为T(n),也叫常数操作数量表达式。 常数操作:与数据量无关的操作,如 + - * / 位操作 比较操作等, 阅读全文
posted @ 2022-06-20 11:50 Liang-ml 阅读(416) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示