数据结构与算法设计
文章平均质量分 94
枫铃树
这个作者很懒,什么都没留下…
展开
-
[C++] 七种常见排序算法的实现及运行效率对比(算法课实验)
简介本文实现以下七种排序算法:插入排序选择排序冒泡排序希尔排序堆排序快速排序归并排序使用 C++ 完成,并测试运行时间。算法说明以下针对每种算法,从网络摘取简介,并附实现代码。所有实现以对 int 数组排序,目标为从小到大为例。感兴趣的读者可以自行编写更通用的写法。插入排序插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。void insertSort(int*原创 2022-03-02 13:59:04 · 3636 阅读 · 0 评论 -
C++ 实现红黑树结构
C++ 面向对象实现红黑树结构。原创 2022-01-23 22:59:12 · 1268 阅读 · 0 评论 -
红黑树详解(下)(红黑树的删除操作)
红黑树的删除和对应修复操作详解。原创 2022-01-22 00:23:18 · 4122 阅读 · 28 评论 -
红黑树详解(上)(红黑树的基本概念、查找操作、插入操作)
红黑树详解前言师傅渣哥在最后一节课上提到,如果能在简历上写“手写过红黑树”,给对方的感觉一定是不一样的。正值寒假,笔者学习大量前人文章,又投入数个夜晚思考,逐个情况推导方案,编写代码,调试分析,终于完成了该数据结构的编写。红黑树结构中涉及大量子问题,需要分类的情况繁多复杂。努力的结果是一棵高效率的查找树,既传承二叉平衡树的优点,又尽可能避免二叉平衡树在平衡过程中带来的过度性能开销。透过红黑树,仿佛看到前人彻夜思考的身影,为哈希表等更高级的结构乃至操作系统的底层埋下奠基。看前人智慧结晶如琉璃飘落,原创 2022-01-22 00:10:17 · 1912 阅读 · 1 评论 -
[C++] 使用 Huffman Tree 哈夫曼树实现对 ASCII 字符串文本的压缩与解压(下)
上接:[枫铃树] [C++] 使用 Huffman Tree 哈夫曼树实现对 ASCII 字符串文本的压缩与解压(上)原创 2021-11-07 12:27:47 · 1192 阅读 · 0 评论 -
[C++] 使用 Huffman Tree 哈夫曼树实现对 ASCII 字符串文本的压缩与解压(上)
前情如果你对树和哈夫曼树的概念比较模糊,可以先看看这篇文章:[枫铃树] 树和 Huffman Tree 哈夫曼树用哈夫曼树实现对 ASCII 字符文本的压缩与解压考虑以下文本:LarryYYDS如果直接按照 ASCII 码存储这段文本,由于单个字符需要占据一字节(8 bits)空间,这段文本总共需要占用 9×8=72 (bit) 空间。下面,我们进行一个神奇的操作。首先,统计这段文本中各个字符出现的频率:字符出现次数L1a1r2y1Y原创 2021-11-07 10:35:38 · 2270 阅读 · 6 评论 -
树和 Huffman Tree 哈夫曼树
基础概念补充什么是树这是一棵有12个节点的树(其中,我们定义这棵树每个节点上的数字只是它的编号,没有其他意义)。#mermaid-svg-6NdIJ5IscyFAQ8o5 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-6NdIJ5IscyFAQ8o5 .label text{fill:#333}#merm原创 2021-11-07 10:34:27 · 1295 阅读 · 2 评论 -
C++ 无符号大整数类 BigUInt 的实现
问题提出我们知道,在python中,使用内置的int数据类型即可完成大整数高精度运算。但是,C++和Java等语言内置的整数只能满足最高64位的计算。对此,我们希望在C++中实现一个大整数类,其具有一定的高精度计算能力。目标制作一个大整数类,实现高精度加、乘法运算等功能。为满足变长要求,采用动态内存申请方式管理内部数据。为简化难度,暂只考虑无符号情况。功能点设计首先,一个数字必须要有赋值能力。对此,我们设计如下功能:使用 unsigned long long 为大整数对象赋值大整数拷贝(使用原创 2021-09-30 18:19:57 · 1426 阅读 · 0 评论