自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++关键字:static和const

static的作用修饰普通变量:修改变量的存储区域和生命周期,使变量存储在静态区,在main函数运行前就分配空间, 有初始值就初始化它,无初始值系统用默认值初始化它。修饰局部变量,函数第一次调用时初始化,之后的调用不再初始化,作用域在函数内。修饰全局变量,该变量只在本文件内可见。修饰普通函数:表明函数的作用范围,仅在定义该函数的文件内可见。多文件开发时,为防止与其他文件内的函数同名,可将函数...

2019-08-09 22:40:55 228

原创 C++ explicit关键字的用法

C++ explicit关键字的用法  explicit用于class的单参数构造函数,或者除第一个参数外其余参数都有默认值的构造函数前,其作用是显示声明,与之相对应的是implicit(编译器默认)。  当调用类构造函数时,如果实参类型不匹配构造函数的形参类型,编译器会将参数转换为相匹配的类型。  explicit会阻止这种隐式转换,当参数类型不匹配时,编译错误。  一般对单参数的构造函...

2019-08-09 22:09:56 163

原创 排序算法(十):桶排序

一、算法原理桶排序(Bucket sort)是计数排序的改进版,计数排序假设输入数据都属于一个小区间内的整数,而桶排序假设输入数据服从均匀分布,元素均匀独立地分布在[0,1)区间上。桶排序将[0,1)区间划分为n个相同大小的子区间,称为桶。然后,将n个输入数据分别放置到各个桶中,因为输入数据是均匀、独立分布在[0,1)区间上的,所以一般不会出现很多数据落在同一个桶中的情况。为了得到输出结果,先对...

2019-07-26 10:45:16 299

原创 排序算法(九):基数排序

一、算法原理基数排序(Radix sort)是用在卡片排序机上的算法,是一种非比较的排序算法。基数排序对十进制数的每一位进行排序,与直观感受不同的是,先按最低有效位进行排序,然后收集;再按次低位排序,再收集;依此类推,直到按最高位进行排序收集之后,数组整体完成排序。为了确保基数排序的正确性,每一位的排序算法必须是稳定的(例如,若a=b,排序后a与b的顺序不发生改变)。二、算法描述首先,找到...

2019-07-26 10:24:38 260

原创 排序算法(八):计数排序

一、算法原理计数排序(Counting sort)的基本思想是:使用一个辅助数组C和B,其中C中第i个元素是待排序数组A中值为i的元素的个数,B是排序后的数组,对每一个输入元素x,确定小于x的元素的个数,利用这一信息,就可以直接把x放在它在输出数组中的正确位置上了。例如,如果有15个元素小于x,那么x就应该在第16个输出位置上。二、算法描述假设规模为n的数组中每个元素的值都是在[0…k]区间...

2019-07-25 11:22:35 360

原创 排序算法(七):堆排序

一、算法原理堆排序(Heap sort)使用堆这样一种数据结构来进行数据管理,它与归并排序相同但不同于插入排序的是时间复杂度是O(nlogn);它与插入排序相同,但不同于归并排序的是具有空间原址性(任何时候都只需要常数个额外的元素空间存储临时数据)。因此堆排序结合了这两种排序算法的优点。堆(二叉堆)是一个数组,可以被看成一棵完全二叉树,除了最底层外,该树是完全充满的,而且是从左向右填充。给定一...

2019-07-23 10:21:55 242

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

一、算法原理快速排序(Quick sort)是一种应用最广泛的排序算法,实现简单,适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序最大的优点是它是原址排序(只需要一个很小的辅助栈),且将规模为n的数组排序所需的时间与nlogn成正比,而前面学习过的冒泡排序、选择排序、插入排序和归并排序都无法将这两个优点结合在一起。快速排序的缺点是实现时容易造成低劣的性能,最坏情况时间能达...

2019-07-22 16:31:11 239

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

一、算法原理归并排序(Merge sort)是一种建立在归并操作上的递归排序算法,该算法是采用分治法的一个典型的应用,归并排序将一个数组递归地分成两半分别排序,然后将结果归并起来。归并排序是一种稳定的算法,对任意长度为n的数组的排序时间与nlogn成正比,但它需要额外空间的规模与n成正比。二、算法描述把长度为n的数组分成两半对这两个子数组分别采用归并排序将两个排序好的子数组归并成一个排...

2019-07-21 11:23:44 314

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

一、算法原理希尔排序(Shell sort)是Donald Shell于1959年提出来的一种排序算法,它是插入排序的经过改进的一种更高效的排序算法。与插入排序只交换相邻元素不同的是,希尔排序交换不相邻的元素以对数组的局部进行插入排序,逐渐减小交换元素间隔不断微调数组。实现希尔排序的一种常用方法是把数组按一个增量gap分组,对每组按插入排序算法进行排序,随着增量逐渐减小,数组趋向整体有序,当...

2019-07-21 10:31:10 164

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

一、算法原理通常人们整理扑克牌的方法就是一张一张来,将每一张扑克牌插入到已经有序的牌中的适当位置。为了给要插入的元素腾出空间,需要将这个位置之后的全部元素在插入之前都向后移动一位。这种算法就是插入排序(Insert sort)。与选择排序相同的是,当前位置左边的元素都是排序的,但它们的最终位置还不确定,为了给更小(或更大)的元素腾出位置,它们可能会被移动。当索引到达数组尾部时,数组排序就完成了。...

2019-07-21 09:33:40 212

原创 排序算法(二):选择排序

一、算法原理选择排序(Select sort)是一种简单直观的排序算法,基本原理是:首先查找数列中最小(或最大)的元素,然后将它和第一个元素交换;接着从第二个元素开始找到最小(或最大)的元素,将它和第二个元素交换;依此类推,直到数组整体排序。这种方法在不断选择剩余元素的最小(或最大)元素,因此称为选择排序。二、算法描述假定要将一个数组按升序规则排列,数组规模是n第一轮扫描从记录第一个元素...

2019-07-20 22:06:22 163

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

排序算法(一):冒泡排序一、算法原理冒泡排序(Bubble sort)是一种比较简单的排序算法,从前到后依此检查数列的每一对相邻元素,一旦发现它们逆序就交换二者位置。显然一轮扫描一般不能达到整体排序,则需要重复进行这种扫描过程,直到数列整体有序。这种算法的名称由来是因为越小(或越大)的元素会经过交换慢慢浮到数列顶端。二、算法描述假定需要将一个数列按照升序规则排列。从头开始,若第一个...

2019-07-19 19:10:46 290

原创 C++内存分配和管理

C++中new/delete 与malloc/free的区别总结new/delete与malloc/free的十个区别特征new/deletemalloc/free分配内存位置自由存储区堆分配成功返回值类型指针void*(需要指针类型强制转换)分配失败返回值默认抛出bac_alloc异常返回NULL分配内存大小编译器根据类型计算必须显...

2019-07-19 10:50:01 267

原创 基于Huffman算法实现文件压缩解压缩(C语言)

基于Huffman算法实现文件压缩解压缩(C语言)一、实现步骤统计源文件中字符种类和频率建立Huffman编码树生成Huffman编码表压缩文件时,字符匹配编码,将编码写入压缩后文件解压缩文件时,读取编码,匹配编码表中的字符,写入解压缩后的文件二、读取文件为了能够处理任何格式的文件,采用二进制方式读写文件,以一个无符号字符(unsigned char)的8位类型为一个处理单元,...

2019-07-18 20:08:44 3326 1

空空如也

空空如也

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

TA关注的人

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