c++
nvnnv
这个作者很懒,什么都没留下…
展开
-
C++实现之归并排序
说说思路归并排序实际上就是分治法,插句题外话,归并排序比快排、堆排序的实现难度微大。大体思路就是将待排数列分组,一分二二分四…….说白了就是把数列建成树,直到每个节点分不下为止(剩一个数,就不能再分了)。然后回溯,回溯的同时排序,也就是说,通过整个孩子节点的数列对父节点的数列进行排序,比如: 数列:3 1 9 7 建树如下 回溯的时候,从叶子节点开始,将左右孩子的数列按顺序合并(从小到大)原创 2016-04-05 21:23:51 · 1685 阅读 · 0 评论 -
平衡二叉树+树的旋转
由于二叉排序树插入随意,毫无规则可言,自然时间效率就不能保证,极端情况下会退化成链表(左空右慢或反之)。 平衡二叉树就是在二叉排序树的基础上进行优化,平衡二叉树就是保证任何父节点的左右子树深度只能相差1、0、-1(左-右),所以每次插入一个新点都要修改这棵树使其平衡,学名叫旋转(其实不像旋转),这样效率就能达到log(n)。旋转的讲解 http://www.cppblo原创 2016-03-01 16:09:12 · 435 阅读 · 0 评论 -
关于锁的一点思考
无论是互斥量、信号量、对象锁、线程锁、进程锁等等,简略的说他们都一样,都是把某种东西锁住(抽象了),可能他们的级别不一样、使用的位置不一样。对于我使用过的语言,包括c++、java、python、c,语言体系不一样,但使用锁的思考可能殊途同归。c++/c:在多线程、多进程情况下,我会首先思考当前使用的对象/指针/方法,无论管它叫什么都好。它会在哪里(进程空间的位置),要去哪里,去了干什...原创 2018-11-22 11:14:39 · 239 阅读 · 0 评论