自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 哈夫曼解码

解码步骤:1、读取按顺序读取文件中的字符使用次数、原文件字符长度、哈夫曼编码长度、哈夫曼编码2、和编码步骤一样,通过字符使用次数构建哈夫曼树3、根据哈夫曼树,对哈夫曼编码进行解码,把其解码出来的内容写入原文件字符大小的动态数组中4、把数组写入新文件代码实现struct HufNode{ unsigned char c; char code; int usetime; ////////// HufNode *pParent; HufNode *pLc; HufNode

2021-11-22 00:55:56 3124

原创 哈夫曼编码

哈夫曼编码作用:1、压缩文件(当文件越大,且里面出现重复字符的概率越高的时候压缩越明显;但如果文件很小的话可以不会压缩,反而比原文件更大);2、文件简单加密;编码步骤1、读取文件中的每种字符出现的次数写入CodeNum[256]中。2、根据CodeNum来构建哈夫曼树。2.1、拷贝一份CodeNum,命名为_CodeNum;2.2、每次在_CodeNum中找到两个出现次数最少的来进行组合作为一个结点,其结点的使用次数为其两者之和,把原来两个使用...

2021-11-22 00:49:24 1182

原创 排序算法(桶排序)

工作的原理是将数据按照个位、十位、百位……的顺序(看数据元素中最大的位数),放入桶内,最后依次把各个桶中的记录列出来记得到有序序列。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。稳定性:稳定排序时间复杂度:O(n)适用场景:不用比较,速度很快,但费空间,且桶排序只能适用与数字类型排序;实现步骤:1、申请10个桶(数组);2、把数据按顺序从个位放如桶中;3、在把桶中的数据,从0开始到倒出来,直到9号倒完;5、重复2和3,2中的个位要不断上升(个、十、百.

2021-11-22 00:26:58 244

原创 排序算法(归并排序)

归并排序基本思想是:将已有序的子序合并,从而得到完全有序的序列,即先使每个子序有序,再使子序列段间有序。但归并的空间开销很大,要申请很多空间。稳定性:稳定排序时间复杂度:O(NlogN)适用场景:一般运用在链表的排序中,因为其在链表的排序中就不用申请新的空间,可以通过断链在链接的方式实现。如图代码实现(递归)实现步骤:1、把区间分为两块,申请两块合适大小的动态数组,把分好的两块区间拷贝进申请的两个数组中;2、对其分好块的进行递归。直到块的大小为2的时候开始进行比较.

2021-11-22 00:07:46 405

原创 排序算法(希尔排序)

希尔排序又称为缩小增量排序,是对之前介绍的插入排序的一种优化版本,优化的地方在于:不用每次插入一个元素时,就和序列中有序部分中的所有元素进行比较。该方法的基本思想是:设待排序元素序列有n个元素,首先取一个整数step(为n/2)作为间隔,所有距离为step的元素放在同一个逻辑数组中,在每一个逻辑数组中分别实行直接插入排序。然后缩小间隔step(再除2),重复上述逻辑数组划分和排序工作。直到最后取step = 1不小于,将所有元素放在同一个数组中排序为止。稳定性:不稳定排序时间复杂度:在最坏情况下

2021-11-21 23:40:47 457

原创 排序算法(快速排序)

快速排序的思想是:每趟排序时选出一个基准值,然后将所有元素与该基准值比较,并按大小分成左右两块区间,然后递归执行该过程,直到所有元素都完成排序。稳定性:稳定排序时间复杂度:nlog(n)适用场景:待排序序列元素较多,并且元素较无序。实现步骤:1、定义一个前指针一个后指针,前指针指向该区间第一个元素,后指针指向后一个元素,选择区间的第一个元素作为基准。2、后指针不断往前偏移,当元素小于(大于)基准的时候,停止偏移,前后指针的元素进行交换。3、前指针不断往后偏移,当元...

2021-11-21 23:17:47 290

原创 排序算法(插入排序)

基本概念插入排序的思想是将初始数据分为有序部分和无序部分,每一步将一个无序部分的数据插入到前面已经排好序的有序部分中,直到插完所有元素为止。稳定性:插入排序是稳定排序时间复杂度:在插入排序中,当待排序序列是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较n- 1次,时间复杂度为O(n)。  最坏的情况是待排序数组是逆序的,此时需要比较次数最多,总次数记为:1+2+3+…+N-1,所以,插入排序最坏情况下的时间复杂度为O(n2)。适用场景:数据量不...

2021-11-21 22:49:51 788

原创 排序算法(冒泡排序法)

冒泡排序其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,(按照设定比较后交换)这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序。

2021-11-21 21:03:28 526

原创 排序方法(选择排序法)

选择排序的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置知道未排序元素个数为0。

2021-11-21 20:47:25 564

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除