渐悟 随心录

做自己认为正确的事

动态规划——何为动态规划

动态规划入门三部曲(上)

本系列将对动态规划进行讲解,分为上中下三部曲。 本篇将来详细说说什么叫做动态规划和标准解题步骤 哈哈 何为动态规划 我们给出百度百科的解答: 此处有几个重要的要素: 最优子结构 简称:DP 下面我们依次讲解 最优子结构 动态规划的灵魂就是 将一个复杂结构转换为多个子结构,并找到最优的子结构,过程如下: 定义“状态” 找到“状态转移方程” ...

算法时空第23、24讲 数据结构复习

次序统计量

栈和队列过于简单,此处不再赘述 自制循环队列 何为循环队列 思路 循环队列重在循环,那么其中关键点在于如何控制循环的头和尾 通过牺牲一个元素: 这样的话,我们可以得出队列为空和队列满的情况,当rear == front时为空,当rear + 1 = front即为满 具体实现见代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

算法时空第21讲 线性时间的排序

次序统计量

最大元和最小元 求数组arr的最大元和最小元 如果用普通方法来解的话,是要先创建哨兵,然后依次与哨兵比较,冒泡法得出。 最大值和最小值均如此,复杂度为o(2n-2) 更为简易的方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if(arr.length() % 2 == 0){ //当 n 为偶数 int min = arr[0]; int...

算法时空第20讲 线性时间的排序(下)

基数排序 桶排序

基数排序 vs 计数排序 vs 桶排序 我们之前已经学过了了计数排序,本篇要讲的是基数排序和桶排序,三者其实都有用到了通的概念,但对其使用有些差异: 计数排序:每个桶存放单一相同键值 基数排序:根据键值的每位数字来分配桶 桶排序: 每个桶存放一定范围的数值 基数排序 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由...

算法时空第19讲 线性时间的排序(上)

计数排序

我们之前学到的排序方法都是进行比较来排序,那么有没有一种排序是无需比较呢? 答案显而易见是有的,那就是计数排序 存在数组 A{2,5,3,0,2,3,0,3},使用计数排序进行排序 思路 统计元素出现次数(统计表) 出现次数| 2 | 0 | 2 | 3 | 0 |1| 元素 0 ...

跟我学Linux——第十二日

第10章 使用 Apache 服务部署静态网站

网站服务程序 一个简单的实例 挂载镜像,使用Yum下载 httpd yum install httpd 启用httpd服务程序并添加到开机项 systemctl start httpd systemctl enable httpd 测试:打开浏览器,输入127.0.0.1即可看到(文件路径:/var/www) 配置服务参数 详细配置👉 配置服务文件参数 SELin...

算法时空第17-18讲 快速排序

快速排序

快速排序,利用了分治法的思想,是一种就地算法。 最坏复杂度为 o(n^2),期望情况下为 o(nlogn),取决于枢纽元的选择 思路——指针交换法 我们以一次快速排序为例 其中,n就是我们选取的枢纽元,n左侧的数小于等于n,右侧的大于n。这样我们再递归排序左右两侧元素即可。 难点: 枢纽元的确立,如果我们选取边界的话,可能会遇到以下情况: 此时就会产生最坏复杂度。极其...

算法时空第15-16讲 堆排序

堆排序

写了一遍,感觉根本写不到那个点上,尤其是和别人写的比起来 传送门:关于堆排序 笔记