一.数据结构与算法概述 数据结构与算法的定义 我们把现实中大量而且非常复杂的问题以特定的数据类型(个体)和特定的存储结构(个体的关系)保存到相应的主存储器(内存)中,以及在此基础上为实现某个功能而执行的相应操作,这个相应操作也叫做算法. 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 二.衡量算法的标准 时间复杂度 指的是大概程序执行的次数,并非程序执行的时间 空间复杂度 指的是程序执行过程中,大概所占有的最大内存 常用的查找 顺序查找 lowB for循环 时间复杂度 O(n)…
阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 常见排序算法效率比较 搜索 树与树算法 二叉树 二叉树的遍历 补充: 什么是算法 算法是独立存在的一种解决问题的方法和思想. 算法的五大特性 输入: 算法具有0个或多个输入 输出: 算法至少有1个或多个输出 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的…
Java数据结构和算法(五)二叉排序树(BST) 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树. 二叉排序树的左子树的节点都小于它的父节点,右子树中的节点都大于它的父节点,因此若按按中序遍历则从小到大的排序 二叉排序树在搜索中的应用非常广泛,同时二叉排序树的一个变种(红黑树)是 java 中 TreeM…
数据结构与算法(Python) Why? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰:兵法! 我们可以不看兵法在战场上肉搏,如此,可能会胜利,可能会失败.即使胜利,可能也会付出巨大的代价.我们写程序亦然:没有看过数据结构和算法,有时面对问题可能会没有任何思路,不知如何下手去解决:大部分时间可能解决了问题,可是对程序运行的效率和开销没有意识,性能低下:有时会借助别人开发的利器暂时解决…
1.了解基本数据结构及特点 如,有哪些二叉树,各有什么特点 树二叉搜索树 每个节点都包含一个值,每个节点至多有两棵子树,左孩子小于自己,右孩子大于自己,时间复杂度是O(log(n)),随着不断插入节点,二叉树树高变大,当只有左(右)孩子时,时间复杂度变为O(n). 平衡二叉树保证每个节点左右子树高度差绝对值不超过1.比如,AVL树在插入和删除数据是经常需要旋转以保持平衡.适合插入删除少场景. 红黑树非严格平衡二叉树,更关注局部平衡,而非总体平衡,没有一条路径比其他路径长出两倍,接近平衡,减少了许…
算法的提出 算法的概念 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用. 算法是独立存在的一种解决问题的方法和思想. 对于算法而言,实现的语言并不重要,重要的是思想. 算法可以有不同的语言描述实现版本(如C描述.C++描述.Python描述等),我们现在是在用Python语言进行描述实现. 算法的五大特性 输入: 算法具有0个或多个…
上一节,我们讲了复杂度的大 O 表示法和几个分析技巧,还举了一些常见复杂度分析的例子,比如 O(1).O(logn).O(n).O(nlogn) 复杂度分析.掌握了这些内容,对于复杂度分析这个知识点,你已经可以到及格线了.但是,我想你肯定不会满足于此. 今天会继续给你讲四个复杂度分析方面的知识点,最好情况时间复杂度(best case time complexity).最坏情况时间复杂度(worst case time complexity).平均情况时间复杂度(average case tim…
一.基本认识 1.数据结构与算法的关系? (1)数据结构(data structure): 数据结构指的是 数据与数据 之间的结构关系.比如:数组.队列.哈希.树 等结构. (2)算法: 算法指的是 解决问题的步骤. (3)两者关系: 程序 = 数据结构 + 算法. 解决问题可以有很多种方式,不同的算法实现 会得到不同的结果.正确的数据结构 是 好算法的基础(算法好坏取决于 如何利用合适的数据结构去 处理数据.解决问题). (4)数据结构动态演示地址: https://www.cs.usfca.…
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位 我会用数据结构与算法[Java]这一系列的博客记录自己的学习过程,如有遗留和错误欢迎大家提出,我会第一时间改正!!! 注:数据结构与算法[Java]这一系列的博客参考…
在我的Linux刀耕开荒阶段,就想开始重拾C,利用C实现常用的基本数据结构和算法,而数据结构和算法的掌握的熟练程度正是程序的初学者与职业程序员的分水岭. 那么怎么开启这一段历程呢? 按照软件工程的思想,先从需求分析开始,用准确的共同的语言去表达需求,作出规格,到后面的设计,实现,维护. 基本数据结构和算法需求比较明朗,但提高沟通能力要用我们的语言表达出来,然后进行建模,画图分析,设计,最后到实现,优化维护. 对于画图工具,我选择Graphviz.刚开始使用Linux下的PhotoShop--GI…