12 The fool

尚未进行身份认证

我要认证

为每件事积极准备,争取结果的最优化.

等级
TA的排名 4k+

数据结构与算法(Python)——常见数据结构Part5(二叉搜索树BST和AVL)

写在前面在上一节part4我们熟悉了二叉树结构,以及其遍历算法,本节将继续学习常见的树结构,包括二叉搜索树和一种自平衡的二叉搜索树AVL。1. 二叉搜索树二叉搜索树(Binary Search Tree):二叉查找树,也称二叉搜索树、有序二叉树(ordered binary tree),排序二叉树(sorted binary tree)。它或者是一棵空树;或者是指具有如下性质的二叉...

2018-02-06 20:30:08

数据结构与算法(Python)——常见数据结构Part4(二叉树)

写在前面在上一节part3我们熟悉队列结构,本节将熟悉应用广泛的树结构。我们的目的是快速了解他们,对于它们涉及到的复杂的数据结构和算法,在这里并不全部展开,留在后期详述。1. 树1.1 树的直观感受树是一个广泛应用的数据结构,即使未开始学习这个数据结构,我们在生活或者计算机中已经和它打交道好久了。首先让我们看几个树形的应用例子(图片来自What is the real li...

2017-12-21 17:31:02

数据结构与算法(Python)——常见数据结构Part3(队列和循环队列)

写在前面在上一节part2我们熟悉了栈结构,本节继续对其他常见数据结构进行总结。我们的目的是快速了解他们,对于它们涉及到的复杂的数据结构和算法,在这里并不全部展开,留在后期详述。1. 队列1.1 一般队列同上一节栈类似,队列(Queue)结构也是插入和删除元素受到限制的线性结构。队列一般是一种只允许在线性结构的一端进行插入,另一端进行删除的结构,允许插入的一端称之为队尾(r...

2017-12-20 17:19:52

数据结构与算法(Python)——常见数据结构Part2(栈和递归)

写在前面在上一节part1我们熟悉数组和链表,本节继续对其他常见数据结构进行总结。我们的目的是快速了解他们,对于它们涉及到的复杂的数据结构和算法,在这里并不全部展开,留在后期详述。1. 栈栈(stack)也是一种线性结构,与数组不同的是,栈限定了只能在线性表的一端,例如尾部进入插入或者删除操作(只允许头部操作类似)。栈类似于把车开入了一个死胡同,只剩下一端,只能从这个入口进入或...

2017-12-16 20:35:36

数据结构与算法(Python)——常见数据结构Part1(数组和链表)

写在前面本节对常见数据结构做一个预览,我们的目的是快速了解他们,对于它们涉及到的复杂的数据结构和算法,在这里并不全部展开,留在后期详述。1.数组数组是我们要学习的第一个线性结构(Linear structure),所谓线性结构,指的是在数据有限集合中,每个数据元素都有一个确定的位置,例如a0a0a_{0}是第一个元素,an−1an−1a_{n-1}是最后一个元素,aiaia_{i}...

2017-12-09 14:24:14

数据结构与算法(Python)-一般概念和算法效率分析

写在前面前面学习完了Python基础内容后,从本节开始正式学习数据结构与算法相关内容。这是一个比较复杂的主题,一般分为初级、高级、以及专门的算法分析三个阶段来学习,因此我们也需要循序渐进。本节主要熟悉数据结构与算法中一般概念,然后熟悉算法效率分析的大O记法,知识结构如下图所示:什么是算法?1)算法的定义算法(Algorithm),指的是对特定问题求解步骤的一种描述。 在数学上,它是运算步骤的有限序

2017-09-24 15:50:25

数据结构与算法(Python)-Python快速入门篇4

写在前面本节是Python入门篇的最后一篇了,通过本节我们将会熟悉Python模块、包的使用,同时了解和养成书写Pythonic代码的习惯。主要内容如下图所示:模块和包1) 模块的定义和名字在Python中一个脚本(Script)是一个将要被当做主模块(main)执行的python文件。模块(Module)是一个以.py结尾的python文件,在文件中我们定义了函数、类,准备以后重用这些代码块。Py

2017-09-18 13:10:57

数据结构与算法(Python)-Python快速入门篇3

写在前面对于简单的任务,我们可以利用一些函数,按照任务处理的流程书写代码来完成需求,这种方式称之为过程式编程(procedural programming);但是对于复杂的系统,如何有条理的将每个模块的代码内聚起来,如何清晰和简洁地表达各个模块之间的交互,就需要一种新的指导思想,面向对象编程(object-oriented programming)。OOP强调的就是为独立模块构造对象,对象之间通过消

2017-09-10 18:58:29

数据结构与算法(Python)-Python快速入门篇2

写在前面紧接着上一节python入门1,本节还是继续学习Python的必备知识。具体的知识结构图如下所示:函数和作用域1)函数定义python中函数定义由关键字def开始,例如定义一个产生斐波拉契数列的函数如下:def fib(n): """Print a Fibonacci series up to n.""" a, b = 0, 1 while a < n: pr

2017-09-03 16:18:22

数据结构与算法(Python)-python快速入门篇1

写在前面python语言以其语法简洁(代码量比java开发的程序少3-5倍,比c++少5-10倍[^1])、快速原型开发(prototyping)以及庞大第三方库的支持,广泛应用于多个领域,成为了一门很流行的语言。我们这里使用Python,可以抛开其他像C++/java这些语言本身的复杂性,把精力集中在数据结构和算法的思考上。同时在完成一般性的数据结构与算法的学习后,熟练掌握Python后,也可以将

2017-08-27 16:16:37

数据结构与算法(Python)-前篇

接触计算机学习已经9年了,零零碎碎学习了很多理论和技术,现在回过头来才发现,能够培养计算机专业素养的基础学科也就那么多,其中数据结构和算法分析,就是一个核心课程。在实际工作过程中,很多时候会遇到庞大的业务需求,项目计划排的满满的,项目进度一直在和市场上同类竞争产品赛跑。一般开发人员的日常都被繁琐的业务塞的满满的,好在只要熟悉了公司的框架和流程后,也就驾轻就熟,慢慢适应了。有时候并不需要什么高深的算法

2017-08-27 11:40:39

OpenGL学习脚印:伽马校正(Gamma Correction)

写在前面 由于CRT,LED等显示设备显示颜色时并非按照线性方式工作,因此我们在程序中输出的颜色,最终输出到显示器上时会产生亮度减弱的现象,这种现象在计算光照和实时渲染时对图形质量有一定影响,需要我们加以处理。本节将熟悉Gamma校正的概念,并通过点光源的示例来表现Gamma校正对图形效果的影响。本节示例代码均可以在我的github下载。为什么需要γ\gamma校正我们在图形程序中认为(1.

2016-10-30 21:35:29

OpenGL学习脚印:Blinn-Phong光照模型

写在前面 在前面基础光照部分,我们学习了Phong Shading模型,Blinn-Phong模型对Phong模型的镜面光成分进行了改进,虽然在物理上解释没有Phong好,但是能更好地模拟光照。本节代码可以在我的github下载。 本节内容整理自: 1.www.learnopengl.com 2.Blinn-Phong ModelPhong不能处理的情况我们知道,Phon

2016-10-29 16:01:56

OpenGL学习脚印: 反走样初步(Anti-aliasing basic)

写在前面 目前,我们绘制的图形中存在瑕疵的,观察下面这个立方体: 仔细看,立方体的边缘部分存在折线,如果我们放大了看,则可以看到这种瑕疵更明显:这种绘制的物体边缘部分出现锯齿的现象称之为走样(aliasing)。反走样(Anti-aliasing)是减轻这种现象的方法。反走样本身也是一个比较复杂的主题,深入了解需要有信号处理中的背景知识,例如信号采样、信号重构、滤波等知识,本节作

2016-10-16 16:17:28

OpenGL学习脚印:创建更多的实例(instancing object)

写在前面 前面我们学习了模型加载的相关内容,并成功加载了模型,令人十分兴奋。那时候加载的是少量的模型,如果需要加载多个模型,就需要考虑到效率问题了,例如下图所示的是加载了400多个纳米战斗服机器人的效果图:渲染一个模型更多的实例,需要使用到实例化技术,就是本节要介绍的instancing object方法。本节示例代码均可以从我的github下载。 本节内容整理自: www.l

2016-10-04 14:23:40

OpenGL学习脚印:几何着色器(geometry shader)

写在前面 一直以来我们使用了顶点着色器(vertex shader)和片元着色器(fragment shader),实际上OpenGL还提供了一个可选的几何着色器(geometry shader)。几何着色器位于顶点和片元着色器之间,如果没有使用时,则顶点着色器输出到片元着色器,在使用几何着色器后,顶点着色器输出组成一个基础图元的顶点信息到几何着色器,经过几何着色器处理后,再输出到片元着色

2016-10-02 22:46:36

OpenGL学习脚印: uniform blocks在着色器中的使用

写在前面 目前,我们在着色器中要传递多个uniform变量时,总是使用多个uniform,然后在主程序中设置这些变量的值;同时如果要在多个shader之间共享变量,例如投影矩阵projection和视变换矩阵view的话,仍然需要为不同shader分别设置这些uniform变量。本节将为大家介绍interface block,以及基于此的uniform buffer object

2016-10-01 19:18:56

OpenGL学习脚印:缓冲对象相关函数的使用(buffer object function usage)

写在前面 OpenGL中还包含除了我们前面介绍的VAO,VBO,EBO等其他类型的缓冲对象。关于如何使用这些缓冲对象的手册或者参考书籍上解释得非常详细,但是阅读起来确实很枯燥无味。 本文将通过简洁、可靠的例子说明一些重要方法的使用,以辅助学习这些方法。本文的目的不是写成详细而厚重的手册,对于文中未详细说明的部分,请参考官方文档。 学习这些内容的过程需要随着实践慢慢积累,因此本

2016-09-25 17:00:00

OpenGL学习脚印: 环境纹理映射(environment mapping)

写在前面 上一节初步学习了使用cubeMap创建天空包围盒,本节继续深入Cubemap这个主题,学习环境纹理贴图。本节示例程序均可以从我的github下载。 本节内容整理自: 1.www.learnopengl.com cubemaps环境纹理贴图同上一节的Cubemap创建天空包围盒有些类似,创建环境纹理贴图也是对当前待渲染物体,从包围的环境纹理上采样作为这个物体的纹理而渲染

2016-09-16 21:41:40

OpenGL学习脚印:立方体纹理和天空包围盒(Cubemaps And Skybox)

写在前面 之前学习了2D纹理映射,实际上还有其他类型的纹理有待我们进一步学习,本节将要学习的立方体纹理(cubemaps),是一种将多个纹理图片复合到一个立方体表面的技术。在游戏中应用得较多的天空包围盒可以使用cubemap实现。本节示例程序均可以在我的github下载。 本节内容整理自: 1.Tutorial 25:SkyBox 2.www.learnopengl.

2016-09-11 22:14:44

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取