- 博客(11)
- 资源 (5)
- 收藏
- 关注
原创 堆排列
由于每次重新恢复堆的时间复杂度为O(logN),共N - 1次重新恢复堆操作,再加上前面建立堆时N / 2次向下调整,每次调整时间复杂度也为O(logN)。二次操作时间相加还是O(N * logN)。故堆排序的时间复杂度为O(N * logN)。//堆排序:利用 最大堆 max_heap//从数组的0位置开始 int LeftChild(int i){ return (2 * i + 1);
2015-11-30 21:02:07 310
原创 堆和优先队列
//如果使用vector代替array,可以动态改变大小,就不需要struct HeapStruct; template<typename ElementType> struct HeapStruct{ int Capacity; //数组所能存放元素的最大个数 int Size; //当前有限队列的大小 ElementType *Elements; //存放元素的数组
2015-11-30 19:49:46 352
原创 希尔排序
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的。//希尔排序
2015-11-30 16:24:31 322 1
原创 快速排序
快速排序算法 O(N*logN) //插入排序 从小到大排序 template<typename T> void InsertionSort(T *A, int N){ int j, p; T tmp; for (p = 1; p < N; p++){ tmp = A[p]; for (j = p; j>0 && A[j-1] > tmp;
2015-11-27 11:15:36 300
原创 插入排序
插入排序 对于小数组,插入排序比较好。 O(N2)//插入排序 从小到大排序 template<typename T> void InsertionSort(T *A, int N){ int j, p; T tmp; for (p = 1; p < N; p++){ tmp = A[p]; for (j = p; j>0 && A[j-
2015-11-27 10:44:24 230
原创 AVL树
AVL树是其每一个节点的左子树和右子树的高度差最多差1的二叉查找树。///////////Avl树////////////// struct AvlNode; typedef struct AvlNode* AvlTree; typedef struct AvlNode* Position;struct AvlNode{ ElementType element; AvlTree le
2015-11-24 20:17:48 311
原创 二叉查找树
////////////二叉查找树//////////// struct TreeNode; typedef struct TreeNode* SearchTree; typedef struct TreeNode* Position;struct TreeNode{ ElementType Element; TreeNode *left; TreeNode *right;
2015-11-23 21:19:13 333
翻译 What and where are the stack and heap?
The stack is the memory set aside as scratch space for a thread of execution. When a function is called, a block is reserved on the top of the stack for local variables and some bookkeeping data. When
2015-11-17 20:45:38 290
原创 第十六章 模板与泛型编程
模板是泛型编程的基础。 16.1 定义模板 16.1.1 函数模板 function template 函数模板 关键字 template + 模板参数列表 template parameter list 在模板定义中,模板参数列表不能为空 实例化模板参数 instantiate 编译器推断模板参数 模板的实例:编译器生成的版本 模板类
2015-11-13 17:02:49 357
翻译 C++ difference of keywords 'typename' and 'class' in templates
typename and class are interchangeable in the basic case of specifying a template:template class Foo { };andtemplate class Foo { };are equivalent.Having said that, there are specific cases where
2015-11-13 10:06:45 648
原创 条款49 了解new-handler的行为
#include "stdafx.h" #include <cstring> #include <iostream>void OutOfMenory(){ std::cerr << "unable to satisfy request for memory /n" << std::endl; std::abort(); }int _tmain(int argc, _TCHAR* ar
2015-11-03 19:19:10 393
深度探索C++对象模型
2015-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人