- 博客(6)
- 收藏
- 关注
原创 归并排序
归并排序以O(NlogN)最坏情形时间运行,使用的比较次数几乎是最优的,是递归算法的一个很好的实例。 //归并排序算法(驱动程序) template <typename Comparable> void mergeSort(vector<Comparable> & a) { vector<Comparable> tempArray(a.size(...
2020-03-04 15:05:03
122
原创 左值、右值和引用
左值 一个左值是一个标识非临时性对象的表达式,一般的法则是,如果程序中有一个变量名,那么它就是一个左值,而不管变量是否可被修改。 右值 一个右值是一个标识临时性对象的表达式,或者是一个不与任何对象相联系的值(如字面值常数) 引用 引用类型允许我们为一个已存在的值定义新的名字。在传统C++中引用一般只能是一个左值的名字,在C++11中可以有两种类型的引用:左值引用和右值引用。 左值引用 C++11中...
2020-03-04 11:14:00
159
原创 希尔排序
希尔排序 希尔排序通过比较相距一定间隔的元素来工作,每趟比较所用的距离随着算法的进行缩小,直到只比较相邻的元素作为最后一趟排序。 相隔的距离叫做增量序列(h1,h2,…,hk),h1 = 1是必要条件。一趟hk 排序的作用就是对相隔k的元素组成的子数组进行插入排序。 最常用的增量序列:hk = N / 2, hk-1 = hk / 2。 template <typename Comparab...
2020-03-03 16:00:55
164
原创 插入排序
简单的插入排序 template <typename Comparable> void InsertionSort(vector<Comparable>& a) { for(int i = 1; i < a.size(); ++i) { Comparable temp = std::move(a[i]); in...
2020-03-03 11:44:23
179
原创 死锁产生的条件及死锁的预防
产生死锁的条件 互斥条件:一个资源只能被一个进程独占,其他的进程申请得到此资源时将被设为等待状态 占有和等待条件:一个进程因得不到资源而进入等待状态时不会释放其占用的资源 不可剥夺条件:任一进程不能从别的进程那里抢夺已占用的资源,只能等待进程释放资源 循环等待条件:存在一个“循环等待链”,其中的每一个进程都因等待前一个进程的资源而进入等待状态,造成永远等待状态 死锁的预防 预防死锁的方法是破坏...
2020-02-16 12:10:54
627
原创 树、二叉树和森林之间的转换
树、二叉树和森林之间的转换 树转化为二叉树 连线:将所有的兄弟节点连接 去线:删除树中每个节点除第一个孩子以外的孩子节点的连线 调整:以根节点为轴心,顺时针旋转一定角度,是层次结构分明 森林转化为二叉树 把森林中的每棵树转化为二叉树 从第二棵二叉树开始,将树的根节点作为前一棵树根节点的右孩子连接 一个拥有三棵树的森林 将所有树转化为二叉树 将所有二叉树转化为一颗二叉树 ...
2020-02-04 11:43:08
2381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅