自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 08算法-二叉搜索树(Binary search tree)

前言 本文主要讲解的是二叉搜索树,首先会罗列一些树的基本知识,然后再介绍二叉搜索树,讲解动态数据结构的一些基本操作(Insert,query, delete),最后讲解一些随机构成一颗二叉搜索树的期望深度。并用一个编程题来实战一下。 树的基础知识 树有几个关键名词,root,node,leaves,depth,child,parent这些。其实定义一个树的基本的数据结构,只需要这样 type Tr...

2020-03-23 11:06:42 169 1

原创 07算法导论-散列表(hash table)

前言 很多的应用都需要一些动态集合结构,这些动态集合结构都支持INSERT, SEARCH, DELETE的字典操作。对于普通的数组进行寻址我们需要Θ(1)\Theta(1)Θ(1)。但是我们实际存储的关键字数比全部的关键字要小很多,我们使用hash替代普通的数组,在合理假设的情况下,我们做上述操作的时候,也只需要Θ(1)\Theta(1)Θ(1)。即使hash函数在最糟糕的情况下,也就是hash...

2020-03-21 16:27:42 180

原创 06算法-查找第k小的数(order statistic)

前言 这个问题作用的数据集是这样的,假设有一个数组,其里面的每一个数据都不是重复的。然后在这样的个数组里,去寻找第k小的元素。这样的方法可以先排序,然后获取。这样的算法的时间复杂度为Θ(nlgn)\Theta(nlgn)Θ(nlgn)。那能否在线性时间获取到第k小的元素呢?本文给出了两种方法来解决这个问题。 第一种方法其实是快速排序partition函数移植过来的,它的期望是Θ(n)\Theta(...

2020-03-17 17:27:16 571

原创 05算法-线性时间排序

简介 本文主要介绍决策树模型,推导了基于比较的排序算法的最快速度,然后给出了一种在特定条件下的线性时间复杂度的排序算法。 decision-tree model 这里决策树就不多做介绍,其本质就是通过比较来给出所有排序结果的模型。基于比较的算法,merge sort, insertion sort, quick sort, heap sort这一类算法,都可以用决策树模型来描述 根据推论,一颗完整...

2020-03-15 23:21:16 107

原创 04算法-快速排序(深入分析)

abstract 本文是对快速排序算法的深入分析,主要讲解了快速排序算法的基本原理,时间复杂度分析以及如何去改进的快排算法,本文提供快排的伪代码,以及用Golang实现的具体代码。 这里补充一下一般算法设计的思路,首先根据问题分析建模,设计最初版本的代码,分析代码的running time,然后找到问题所在,解决问题。这样的。 the idea of algorithm 快速排序算法是典型的使用分...

2020-03-15 15:01:18 162

原创 04计算机操作系统-虚拟内存

前言 本文是根据虚拟内存的总结,包括覆盖技术,交换技术,虚存技术。虚拟内存的起因是应用程序的运行内存越来越大,而内存的增长不能满足相应的需求,所有需要借助于disk的容量提高程序的运行空间。 覆盖技术 这个技术现在已经不再使用了,其实就是需要将应用程序模块化,然后按照程序运行的顺序,设计各模块在拷贝到内存中的时间。结合各个程序块的大小和执行顺序来设计哪几个模块共有一块内存区域,以及按照怎样的顺序覆...

2020-03-13 10:44:57 321

原创 03计算机操作系统-非连续地址分配(分段,分页)

前言 本文是非连续地址分配课程的总结。本文主要介绍非连续地址分配, 非连续地址分配主要有:分段和分页机制。分段有段表,分页有页表,来建立逻辑地址(page)与物理地址(frame)的映射关系。为了减少页表的容量,讨论了一下反向页表。 非连续地址分配的好处有:一个程序的物理地址空间是非连续的,可以减少地址碎片的产生;更好的内存利用;允许共享代码与数据;支持动态加载和动态链接。 分段 一个应用程序有堆...

2020-03-12 21:46:06 292

原创 02计算机操作系统-连续内存分配

操作系统-连续内存分配 本章主要讲解,计算机体系机构及内存分层体系,地址空间与地址生成,连续地址分配相应的知识 计算机体系结构及内存分层体系 CPU由:运算器,寄存器,处理器,缓存(cache),存储管理单元(mmu) 内存的分层体系: CPU register 3.6GHz L1 cache 3.6GHz L2 cache 3.6GH_________________硬件___...

2020-03-07 14:26:48 276

原创 01计算机操作系统-启动和中断,异常,系统调用

操作系统运行的基础常识 主要讲解了操作系统的作用,以及操作系统是怎样提供服务的 操作系统的作用 主要分为:控制软件,管理应用程序,为应用程序提供服务,杀死应用程序;资源管理,管理外设,分配资源 操作系统作为介质有(进程->CPU 文件->磁盘 地址空间->内存),操作系统是应用程序和计算机硬件的纽带 操作系统分为:shell和kernel。 kernel是负责CPU的调度,物理...

2020-03-07 10:14:20 1341

原创 03算法-分治法

算法-分治法 本章是算法-分治法的总结,主要讲解分治法的思想,然后就课堂上的几个例子用Golang实现。 分治法的思想 Divide and Conquer three step: 1)divide : one bigger to one or more subproblem 2)conquer: solve each subproblem recursively 3)combine merg...

2020-03-06 18:48:56 174

原创 02算法-渐近符号,递归及其解法

算法 渐近符号,递归和解法 本书是基于渐近符号,递归及其解法第二节课的总结。主要分析了三种渐近符号看,以及三种解递归的方法 渐近符号 Ω(n2)\Omega(n^2)Ω(n2)表示当n足够大的时候,运行时间一定小于n2n^2n2,是下界 O(n2)\Omicron(n^2)O(n2)表示小于当n足够大的时候,运行时间一定小于n2n^2n2,是上界 Θ(n2)\Theta(n^2)Θ(n2)表示一种...

2020-03-06 13:52:07 368

原创 01算法-时间复杂度分析

算法 算法分析 本书是基于算法导论第一节课的总结。主要总结算法分析中的时间复杂度,并通过排序算法中的插入排序和归并排序来分析。 算法的时间复杂度的计算 分析算法运行的快慢,主要有以下几个方面决定:输入数据的大小(data size),输入数据的好坏,在什么样的平台上运行。一个好的程序或者软件,需要对输入的对象有一定的研究。比如排序算法,在size<30的情况下插入排序是最为理想的排序算法,当...

2020-02-28 18:44:36 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除