优先队列 二叉堆 二叉堆的操作: 下沉和上浮 优先队列的实现 堆排序 排序总结 优先队列 算法这书看到现在, 基本上能看明白算法讲什么和代码, 但是数学分析真的是看不来, 太刺激了. 堆排序是从一个优先队列的抽象数据结构引入的. 所谓优先队列, 就是一个某个长度的队列, 可以放入元素, 但是取出的时
这一节的算法都基于归并, 所以会给算法的模板新增加一个操作. 归并就是将两个有序的数组归并成一个更大的有序数组. 归并和之前的快速排序有一个区别是, 我们开始使用递归, 而且给递归函数传递的都是索引, 这样比较清晰. 实现归并方法 自顶向下的归并排序方法 自底向上的归并排序 快速排序 快速排序的改进
排序算法是解决很多问题的第一步, 而且排序算法发展时间长, 都非常经典, 优雅和高效. 初级排序算法 选择排序 插入排序 希尔排序 初级排序算法 算法这里很好, 没有上来就讲排序, 而是将排序算法类抽象出了一个共同的模板. 将排序抽象为排一个数组中元素的序, 每个元素都有一个主键(我个人理解就是据以
这一部分是结合Coursera上边塞奇威克本人的视频来看的, 讲的确实不错. 定量测量程序的运行时间 union-find 动态连通性算法 动态连通性算法 类似于集合的实现 动态连通性算法 树结构实现 动态连通性算法 加权树实现 动态连通性算法 加权+路径压缩 定量测量程序的运行时间 有一个三嵌套循
为了继续提高自己的水平, 是时候开始接触算法了. 看了很多算法的推荐, 这本算法第四版是很好的入门教材. 在Coursera上找到了这门课程的第一部分和第二部分, 还有书的配套网站 材料备
之前的加锁并发其实并没有真正的提高效率, 因为还是就一个共享变量来操作, 本质上还是执行完了全部计算. 实际上现代处理器具有多个核心, 可以同时执行与核心数量相等的线程. 现在来看一下真正利用多个线程并行处理的程序 提高并行性的代码 并行程序的性能评价 线程安全 - 线程不安全的函数 线程安全 -
线程 线程包的接口 多线程echo server 多线程程序中的共享变量 信号量 - 线程同步的理论 信号量 - 接口 信号量 - 二元信号量 信号量 - 生产者/消费者模型 信号量 - 读者/写者模型 线程实际使用 - 预线程服务器 线程 线程有点像上边两个方
终于站在CSAPP最后一章的门前了, 一年以前买这本书的时候还看不进去, 现在竟然已经全部看完而且看懂了. 内心还是有点小小的激动, 这种力量正不断涌现的感觉... 并发 多进程程序 I/O多路复用 - select 函数 I/O多路复用 - 事件驱动的并发 I/O多路复用 - 优缺点 并发 在第八
这一节来编写一个简单的Web服务器, 一切都是从一个简单的原型开始的. 套接字读写的客户端与服务端 微型Web服务器 - 主程序 doit 函数 clienterror 函数 read_requesthdrs 函数 parse_uri 函数 server_static 函数 函数 serve_dyn
套接字接口函数一般都是由系统实现, 所以必须掌握, 应用程序全部要使用系统调用来进行套接字操作. 通用 - socket 客户端 - connect 服务端 - bind 服务端 - listen 服务端 - accept getaddrinfo getnameinfo open_clientfd