![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
BruceTech
INSPIRED BY KOBE. MAN, YOU ARE MY HERO!!
Those times when you get up early, you work hard, those times you stay up late and you work hard, those times when you don’t feel like working. You’re too tired, you don’t want to push yourself, but you do it anyway. That is actually the dream.
展开
-
08算法-二叉搜索树(Binary search tree)
前言本文主要讲解的是二叉搜索树,首先会罗列一些树的基本知识,然后再介绍二叉搜索树,讲解动态数据结构的一些基本操作(Insert,query, delete),最后讲解一些随机构成一颗二叉搜索树的期望深度。并用一个编程题来实战一下。树的基础知识树有几个关键名词,root,node,leaves,depth,child,parent这些。其实定义一个树的基本的数据结构,只需要这样type Tr...原创 2020-03-23 11:06:42 · 171 阅读 · 1 评论 -
07算法导论-散列表(hash table)
前言很多的应用都需要一些动态集合结构,这些动态集合结构都支持INSERT, SEARCH, DELETE的字典操作。对于普通的数组进行寻址我们需要Θ(1)\Theta(1)Θ(1)。但是我们实际存储的关键字数比全部的关键字要小很多,我们使用hash替代普通的数组,在合理假设的情况下,我们做上述操作的时候,也只需要Θ(1)\Theta(1)Θ(1)。即使hash函数在最糟糕的情况下,也就是hash...原创 2020-03-21 16:27:42 · 188 阅读 · 0 评论 -
06算法-查找第k小的数(order statistic)
前言这个问题作用的数据集是这样的,假设有一个数组,其里面的每一个数据都不是重复的。然后在这样的个数组里,去寻找第k小的元素。这样的方法可以先排序,然后获取。这样的算法的时间复杂度为Θ(nlgn)\Theta(nlgn)Θ(nlgn)。那能否在线性时间获取到第k小的元素呢?本文给出了两种方法来解决这个问题。第一种方法其实是快速排序partition函数移植过来的,它的期望是Θ(n)\Theta(...原创 2020-03-17 17:27:16 · 582 阅读 · 0 评论 -
05算法-线性时间排序
简介本文主要介绍决策树模型,推导了基于比较的排序算法的最快速度,然后给出了一种在特定条件下的线性时间复杂度的排序算法。decision-tree model这里决策树就不多做介绍,其本质就是通过比较来给出所有排序结果的模型。基于比较的算法,merge sort, insertion sort, quick sort, heap sort这一类算法,都可以用决策树模型来描述根据推论,一颗完整...原创 2020-03-15 23:21:16 · 109 阅读 · 0 评论 -
04算法-快速排序(深入分析)
abstract本文是对快速排序算法的深入分析,主要讲解了快速排序算法的基本原理,时间复杂度分析以及如何去改进的快排算法,本文提供快排的伪代码,以及用Golang实现的具体代码。这里补充一下一般算法设计的思路,首先根据问题分析建模,设计最初版本的代码,分析代码的running time,然后找到问题所在,解决问题。这样的。the idea of algorithm快速排序算法是典型的使用分...原创 2020-03-15 15:01:18 · 164 阅读 · 0 评论 -
03算法-分治法
算法-分治法本章是算法-分治法的总结,主要讲解分治法的思想,然后就课堂上的几个例子用Golang实现。分治法的思想Divide and Conquerthree step:1)divide : one bigger to one or more subproblem2)conquer: solve each subproblem recursively3)combinemerg...原创 2020-03-06 18:48:56 · 176 阅读 · 0 评论 -
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 · 373 阅读 · 0 评论 -
01算法-时间复杂度分析
算法 算法分析本书是基于算法导论第一节课的总结。主要总结算法分析中的时间复杂度,并通过排序算法中的插入排序和归并排序来分析。算法的时间复杂度的计算分析算法运行的快慢,主要有以下几个方面决定:输入数据的大小(data size),输入数据的好坏,在什么样的平台上运行。一个好的程序或者软件,需要对输入的对象有一定的研究。比如排序算法,在size<30的情况下插入排序是最为理想的排序算法,当...原创 2020-02-28 18:44:36 · 369 阅读 · 0 评论