![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
baobao小野菊
这个作者很懒,什么都没留下…
展开
-
String类的各种操作(动态)
#define _CRT_SECURE_NO_WARNINGS#define DEFAULT 8#include#include#includeusing namespace std;class String{private: char* _ptr;//指向字符串的指针 size_t _size;//字符串的长度 size_t _capacity;//动态开辟的总容量pri原创 2015-09-10 20:50:30 · 627 阅读 · 0 评论 -
c++中const的作用
Const 作用1. const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令2. 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。3. 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。4. 可以节省空间,避免不转载 2016-07-23 23:58:15 · 359 阅读 · 0 评论 -
二叉树的面试题
二叉树的面试题1.递归创建二叉树;2.由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5);3.前、中、后三种遍历的递归;4.层次遍历-队列应用;5.前、中、后三种遍历的非递归-用桟实现非递归;6.求结点的个数;7.求二叉树的高度;8.求叶子结点的个数;9.查找一个数据;10.求第k层结点的个数;原创 2016-07-25 21:17:52 · 467 阅读 · 0 评论 -
快速排序
快速排序快速排序接近二分查找;时间效率为O(NlogN)-O(N2);原创 2016-06-17 20:07:54 · 572 阅读 · 0 评论 -
并查集
题目:n个人有m对好友关系,如果俩个人是直接或者间接的好友(好友的好友的好友...),则认为他们是同一个朋友圈。请问这n个人里一共有多少个朋友圈并查集的定义:1.将N个不同的元素分成一组不相交的集合。2.开始时,每个元素就是一个集合,然后按规律将两个集合进行合并;3.并查集的底层数据结构是数组。例如:n=5,m=3,r = {{1,2},{2,3},{4,5}}原创 2016-07-15 22:14:00 · 318 阅读 · 0 评论 -
堆排序
题目:堆排序原创 2016-05-31 23:31:33 · 331 阅读 · 0 评论 -
堆的实现
堆的实现堆的介绍:二叉堆的底层数据结构为数组,它可以被视为完全二叉树结构;堆的特性:1、父结点总是大于(或小于)子结点2、每个节点的左子树和右子树都是一个最大堆(或最小堆)如图:堆的代码实现如下:提示:本程序利用仿函数与模板实现的堆,大堆与小堆的代码只是一个大于小于号的问题,所以我通过模板传参,实现大小堆,代码复用了起原创 2016-06-22 12:58:37 · 331 阅读 · 0 评论 -
100w个数中找出最大的k个数
题目:100w个数中找出最大的k个数原创 2016-06-05 17:46:47 · 795 阅读 · 3 评论 -
大数据
大数据-----------解决了超出内存表示范围的大数据无法计算的问题,即溢出问题提出问题:在计算机中,每一种类型都有自己的表示范围,比如int的表示范围【0x8000000000000000,0x7fffffffffffffff】,超出范围之后,将会是一个毫无意义的数字。eg:999999999999999999999999999999999999999999999用内置类型无原创 2016-08-07 19:51:51 · 631 阅读 · 0 评论 -
归并排序
归并排序原创 2016-10-05 12:04:39 · 267 阅读 · 0 评论 -
计数排序
计数排序//获取数组中最大值size_t GetMaxNum(int* arr, int len){ assert(arr && len > 0); int i = 0; int maxNum = arr[i++]; for (; i<len; ++i) { if (maxNum < arr[i]) { maxNum = arr[i]; } }原创 2016-10-05 12:10:04 · 411 阅读 · 0 评论 -
文件压缩
Huffman树的应用-------实现文件压缩项目Huffman树的相关定义:WPL(带权路径长度) = PL*weightPL (最小路径长度)= 完全二叉树的路径长度路径(path):从树中一个结点到另一个结点之间的分支构成该俩点之间的路径。路径长度:指路径上的分支条数。树的路径长度是从树的根结点到每一个结点的路径长度之和。带权路径长度最小原创 2016-07-22 23:30:23 · 1207 阅读 · 4 评论 -
冒泡排序
冒泡排序思路:每遍历一次数组,往上冒一个数字,不断地缩小范围,知道所有的数字都排序完;时间效率O(N2);初学C语言版本#include void sort(int a[], int len){ int i, j, tmp; for (i = 0; i<len - 1; i++) { for (j = 0; j<len - i - 1; j++) {原创 2016-06-10 17:35:42 · 311 阅读 · 1 评论 -
请实现一个函数,把字符串中的每个空格替换成“ ”
题目:替换空格---请实现一个函数,把字符串中的每个空格替换成“%20”例子:We are happy.\0替换后:We%20are%20happy.\0思路:从字符串的后面往前替换,这样字符移动的次数少,时间复杂度为:O(n);如下图1:1、首先得遍历字符串,计算字符串的真实长度,以及空格的个数;2、计算替换空格后的长度,2*空格个数+字符串真实长度3、当字符不等于' '原创 2016-05-09 23:03:50 · 1187 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印出1到最大的n位十进制。比如输入3,则打印出1、2、3一直到最大的三位数即999原创 2016-05-24 19:54:35 · 337 阅读 · 0 评论 -
输入二叉树的前序遍历和中序遍历,重建出该二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设前序遍历与中序遍历的结果都不含重复的数字。eg:前序遍历:{1,2,4,7,3,5,6,8}; 中序遍历:{4,7,2,1,5,3,8,6};二叉树结点定义如下:struct BinaryTreeNode{int _value;BinaryTreeNode* _left;Bin原创 2016-05-11 18:46:32 · 641 阅读 · 0 评论 -
旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.原创 2016-05-24 23:18:49 · 253 阅读 · 0 评论 -
链表的逆置
题目:输入一个链表的头节点,从头到尾反过来打印出每个节点的值Reverse()函数:输入头结点,可输出的确是从尾到头;即第一个输入的节点,最后一个输出;最后一个输入的结点,第一个输出;很典型的“后进先出“;用桟实现;1、将结点放进桟中,当结点全遍历一遍时,链表已经反过来,2、此时再从桟顶逐个输出结点的值Reverse2()函数:递归本质就是桟结构;则用_Reverse2(_原创 2016-05-09 21:21:08 · 1645 阅读 · 0 评论 -
优先级队列
堆的实现--->优先级队列注:由于大堆与小堆的实现大同小异,只需要修改大于或小于号;所以为了代码复用,本人使用了模板参数及模板的模板参数模板的模板参数:为了引入仿函数即函数对象;此处不多介绍仿函数,它只是一个函数对象;一个类型;如下:类型GreaterCompare与类型LessCompare:他们的内部都只是重载了();templatestruct Great原创 2016-05-31 17:30:36 · 331 阅读 · 0 评论 -
两个桟实现一个队列
题目:俩个桟实现一个队列,请实现它的俩个函数appendTail/deleteHead算法思路:入队:将元素压入桟s1中;//appendTail出队:先判断s2中是否为空,如果不为空,直接弹出栈顶元素;否则,将s1中的元素逐个弹出并压入桟s2中,把最后一个元素弹出并出队;//deleteHead判断队列是否为空(empty()):判断s1/s2中都没有元素时,返回true原创 2016-05-06 21:05:10 · 660 阅读 · 0 评论 -
实现CMyString类--深拷贝与浅拷贝
实现CMyString类,实现赋值运算符函数(深拷贝与浅拷贝)深拷贝:赋值运算符函数说明步骤1、释放原来的内存空间步骤2、再重新开辟要赋值的对象的大小的空间步骤3、再将另一个对象的值拷贝给this对象友元函数的说明:由于输出重载需要俩个参数,不能再隐含this指针,故使用友元函数代码如下:class CMyString{public:原创 2016-05-08 21:45:01 · 931 阅读 · 0 评论 -
单例模式
题目:实现一个类,只能生成该类的一个实例原创 2016-05-09 11:55:27 · 380 阅读 · 0 评论 -
直接插入排序
直接插入排序与希尔排序希尔排序是直接插入排序的优化直接插入排序思路:将一个数插入一个有序集合;最好时间效率O(N),最坏时间效率O(N2);希尔排序思路:先进行预排序(与插入排序思路相同,就是gap开始大于1),预排序完将小值放在了前面,大值放在了后面;当gap=1时,进行插入排序;此时的插入排序就接近O(N);代码如下:#includeusing n原创 2016-06-07 16:39:21 · 340 阅读 · 0 评论 -
选择排序
选择排序#includevoid sort(int a[],int len){ int i,j,k; for(i=0;i<len-1;i++) { k=i; for(j=i+1;j<len;j++) { if(a[k]<a[j]) { k=j; } } if(k!=i) { int tmp=a[i]; a[i]=a[k];原创 2015-04-20 21:58:18 · 388 阅读 · 0 评论 -
简单工厂模式---静态工厂方法模式
毕业一年多,好久没写csdn了,还需要多多充电,多多学习,多多记录,多多总结,上学时也学过设计模式,但是没在做过大项目,也没用过,也只是看过了,一知半解,工作后项目中的界面框架大佬使用了工厂模式,最近仔细学习了下其中的内容,在此总结作为记录:希望能在合适的地方用到它,看到这篇文章的人也请多多指教:1.本人对于聚合与组合分不太清,如果看到此文章,就请您多多指教啦,举例指导一下,谢谢!2.对于...原创 2018-11-02 20:40:41 · 230 阅读 · 0 评论