
数据结构及算法
nguliu
这个作者很懒,什么都没留下…
展开
-
十大排序算法总结
零、什么是排序算法0.1、排序定义对一序列对象根据某个关键字进行排序。0.2、排序术语稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。...转载 2020-02-13 11:45:23 · 575 阅读 · 0 评论 -
【动态规划】01背包问题
问题描述有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?为方便讲解和理解,下面讲述的例子均先用具体的数字代入,例如:number=4,capacity=8i(物品编号)1234w(体积)2345v(价值)3456总体思路根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满...转载 2019-11-09 14:05:46 · 366 阅读 · 0 评论 -
红黑树删除节点——这一篇就够了
红黑树红黑树常用的操作是插入、删除和查找,并且它对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保,对于红黑树的概念、性质、插入、查找和旋转等这里不再多讲,不了解的请点击wikipedia rb-tree,这里重点讲一下红黑树的删除,这是红黑树中最难但又必须使用的操作。红黑树的5条性质:节点是红色或黑色。根是黑色。所有叶子都是黑色(叶子是NIL节点)。每个红色节点的父子节点都...原创 2019-10-11 20:58:59 · 14710 阅读 · 26 评论 -
利用CAS实现线程安全的无锁队列
1. 关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock free)的数据结构。这个操作用C语言来描述就是下面这个样子:(代码来自...原创 2019-06-01 22:09:10 · 1697 阅读 · 1 评论