随笔分类 - 数据结构
摘要:选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 排序算法不稳定的含义是:在排序之前,有两个数相等. 但是在排序结束之后,它们两个有可能改变顺序.比如说: 在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面
阅读全文
摘要:1 计数排序 2 #include 3 #include 4 using namespace std; 5 //void countSort(int *a, size_t size) 6 //{ 7 // assert(a); 8 // int max = a[0]; 9 // int min = a[0]; 10...
阅读全文
摘要:在这里,平衡指所有叶子的深度趋于平衡,更广义的是指在树上所有可能查找的均摊复杂度偏低。 几乎所有平衡树的操作都基于树操作,通过旋转操作可以使得树趋于平衡。 对一棵查找树(search tree)进行查询/新增/删除 等动作, 所花的时间与树的高度h 成比例, 并不与树的容量n成比例。如果可以让树维持
阅读全文
摘要:当用二叉链表作为二叉树的存储结构时,因为每个结点中只有指向其左、右儿子结点的指针,所以从任一结点出发只能直接找到该结点的左、右儿子。在一般情况下靠它无法直接找到该结点在某种 遍历序下的前驱和后继结点。如果在每个结点中增加指向其前驱和后继结点的指针,将降低存储空间的效率。 我们可以证明:在n个结点的二
阅读全文
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 template 6 struct Node 7 { 8 K _key; 9 V _value; 10 Node*_next; 11 Node(const K& key, const V& valu...
阅读全文
摘要:1 #include 2 using namespace std; 3 template 4 struct BSTNode 5 { 6 K _key; 7 V _value; 8 BSTNode *_left; 9 BSTNode *_right; 10 BSTNode(const K&key,const V&val...
阅读全文
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 6 //Huffman树的节点类 7 typedef struct Node 8 { 9 char value; //结点的字符值 10 int weight; //结点字符出现...
阅读全文
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 template 6 struct BinaryTreeNode 7 { 8 T _data; 9 BinaryTreeNode* _left; 10 BinaryTreeNode* _right; 11 Binary...
阅读全文
摘要:计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序。计数排序是一个类似于桶排序的排序算法,其优势是对已知数量范围的数组进行排序。它创建一个长度为这个数据范围的数组countArray,countArray中每个元素记录要排序数组中对应记录的出现个数。这个算法于1954年由 Har
阅读全文
摘要:该程序定义了链式栈(栈的链式存储结构)的存储结构,并实现了链式栈的基本操作,例如:构造函数、拷贝构造函数和赋值运算符重载函数的实现、析构函数、判空、插入、删除、获取栈顶元素,遍历。 该程序定义了链式栈(栈的链式存储结构)的存储结构,并实现了链式栈的基本操作,例如:构造函数、拷贝构造函数和赋值运算符重
阅读全文

浙公网安备 33010602011771号