- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 排序算法 2:选择排序(C++版)
排序算法 2:选择排序(C++版)1. 算法描述2. 动图演示3. 代码实现选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。1. 算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得...
2018-12-11 21:14:15 2120
原创 排序算法 1:冒泡排序(C++版)
排序算法 1:冒泡排序(C++版)1. 冒泡排序1.1 算法描述1.2 动图演示1.3 代码实现2. 改进冒泡排序2.1 改进思想2.2 代码实现3. 鸡尾酒排序3.1 改进思想3.2 代码实现1. 冒泡排序冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就...
2018-12-11 21:12:11 357
原创 字符串匹配原理及实现(C++版)
字符串匹配原理及实现(C++版)1. 字符串匹配概念2. BF3. KMP4. BM5. 性能总结1. 字符串匹配概念2. BF3. KMP4. BM5. 性能总结
2018-12-05 16:09:01 13762 3
原创 数据结构实现 10.2:映射_基于AVL树实现(C++版)
数据结构实现 10.2:映射_基于AVL树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)...
2018-11-26 19:14:09 674 1
原创 数据结构实现 10.1:AVL树(C++版)
数据结构实现 10.1:自平衡树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值...
2018-11-26 15:48:40 311
原创 数据结构实现 9.2:并查集_树思想实现(C++版)
数据结构实现 9.2:并查集_树思想实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 联合操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 联合操作3.2 查找操作4. 完整代码1. 概念及基本框架9.1 我们利用数组的结构实现了并查集,这一节我们利用树的思想来实现并查集。(但本质上还是数组,只是逻辑上的树形结构)如上图,不同的颜色表示不同的集合,里面的字母表...
2018-11-26 11:16:02 497
原创 数据结构实现 9.1:并查集_数组结构实现(C++版)
数据结构实现 9.1:并查集(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...
2018-11-26 10:40:58 652
原创 数据结构实现 8.1:字典树(C++版)
数据结构实现 8.1:字典树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...
2018-11-25 22:27:46 631
原创 数据结构实现 7.1:线段树(C++版)
数据结构实现 7.1:线段树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 构建操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 构建操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...
2018-11-24 21:26:42 1664
原创 数据结构实现 6.4:优先队列_基于链表实现(C++版)
数据结构实现 6.4:优先队列_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.3 中通过 动态数组 实现了 优先队列 ,这一节我们通过链表来实现优先队列。优先队列 是 队列 的一种,所以有队列的基本特性...
2018-11-24 15:58:57 1341
原创 数据结构实现 6.3:优先队列_基于动态数组实现(C++版)
数据结构实现 6.3:优先队列_基于动态数组实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.2 中通过 最大二叉堆 实现了 优先队列 ,这一节我们通过动态数组来实现优先队列。优先队列 是 队列 的一种,所以有队列...
2018-11-24 15:45:31 597
原创 数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)
数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 是一种现实中很常见的数据结构,但有时候队列排序不仅仅依靠入队时间来决定,而是不同的元素有不同的优先级。显然,通过 6.1...
2018-11-14 19:37:10 516 2
原创 数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)
数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)1. 概念及基本框架1.1 满二叉树1.2 完全二叉树2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二叉堆 是一种高级数据结构,这里我们通过 1.1 中的 动态数组 来实现。因为二分搜索树操作的...
2018-11-14 18:27:47 641 2
原创 数据结构实现 5.2:映射_基于链表实现(C++版)
数据结构实现 5.2:映射_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架.在 5.1 中我们通过 二分搜索树 来实现了映射,这一节我们通过 链表 来实现映射。映射 的基本...
2018-11-13 15:10:07 628
原创 数据结构实现 5.1:映射_基于二分搜索树实现(C++版)
数据结构实现 5.1:映射_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节...
2018-11-13 13:28:25 556
原创 数据结构实现 4.2:集合_基于链表实现(C++版)
数据结构实现 4.2:集合_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架在4.1 中我们通过 二分搜索树 实现了集合,这一节我们通过 链表 来实现集合。集合 的基本特性依然要满足:集合内的元素 不能重复 ...
2018-11-13 11:01:18 981 2
原创 数据结构实现 4.1:集合_基于二分搜索树实现(C++版)
数据结构实现 4.1:集合_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架集合 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节我们通过 二分搜索树 来实现集合...
2018-11-13 10:12:28 520
原创 数据结构实现 3.1:二分搜索树(C++版)
数据结构实现 3.1:二分搜索树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 遍历操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二分搜索树 是一种 半线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是树形结构的一种。二分搜索树结构如下图...
2018-11-12 23:14:51 763
原创 数据结构实现 2.3:链表队列(C++版)
数据结构实现(七):链表队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架在前面第三节中,我们通过 动态数组 实现了 队列 这种数据结构。当然,队列也可以通过 链表 来实现所谓的 链表队列 。链表队列的结构如上图所示,...
2018-11-10 20:52:05 249
原创 数据结构实现 2.2:链表栈(C++版)
数据结构实现(六):链表栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第五节,我们知道链表虽然整体的操作时间复杂度是 O(n) 级别的,但是如果只对头结点进行操作,那么时间复杂度是 O(1) 级别的,这很类似于栈(单...
2018-11-10 13:58:27 713
原创 数据结构实现 2.1:链表(C++版)
数据结构实现(五):链表(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架链表 是一种 线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是线性表的一种。链表结构如下图所示:...
2018-11-10 11:01:31 444
原创 数据结构实现 1.4:循环队列(C++版)
数据结构实现(四):循环队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第三节我们知道,数组队列 在出队操作中需要花费 O(n) 的时间复杂度,原因在于出队时需要移动大量元素。如果我们可以循环利用空间,那么问题就迎刃...
2018-11-09 16:46:09 439 1
原创 数据结构实现 1.3:数组队列(C++版)
数据结构实现(三):数组队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现队列这种数据结构。当然,队列也可以通过其他方式来实现。因为该队列是通过动态...
2018-11-09 13:34:56 1685
原创 数据结构实现 1.2:数组栈(C++版)
数据结构实现(二):数组栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架栈 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现栈这种数据结构。当然,栈也可以通过其他方式来实现。因为该栈是通过动态数组实现的...
2018-11-09 11:05:35 796
原创 数据结构实现 1.1:动态数组(C++版)
数据结构实现(一):动态数组(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架数组 是一种 线性结构 ,而且存储上属于 顺序存储(即内存的物理空间是连续的),也就是线性表中的 顺序表 。数组结构...
2018-11-08 16:33:29 2266 3
原创 C++中不同类型对象的存放位置
C++中不同类型对象的存放位置1. 存储区域2. 不同类型对象的存储2.1 全局对象2.2 局部对象2.3 静态局部对象2.4 动态对象在C++中,定义的对象被放在不同的区域中,以下就各个区域以及不同类型对象的存储情况作简要介绍。1. 存储区域栈(Stack)是存在于作用域(scope)的一块内存空间。例如当你调用函数时,函数本身就会形成一个栈用来放置它所接收的参数,以及返回地址。堆(H...
2018-11-07 17:30:49 6082 1
原创 C++中的深拷贝与浅拷贝
C++中的深拷贝与浅拷贝1. 概念2. 实际应用2.1 构造函数2.2 拷贝构造函数2.3 拷贝赋值函数2.4 析构函数1. 概念在C++涉及指针的部分中,有 深拷贝和 浅拷贝 两个概念,让我们通过例子来理解一下。C++中,字符串是通过首地址来表示的,如图所示:图中,字符串用 s1 表示,而 s1 是字符串 “HELLO” 的首地址(字符串以 ‘\0’ 作为结束标志),通过寻址,即可实现字...
2018-11-06 21:24:18 353
原创 九大编程语言
九大编程语言1. Java2. C3. Python4. C++5. C#6. Ruby7. Objective-C8. PHP9. JavaScript10. 总结如今 Python、Java、C、C ++、JavaScript 等编程语言五花八门,而各种编程语言也各有优劣,那么,我们该如何去选择?其实,不同的语言适合于不同的领域 ,以下就九大编程语言的简介、用途、发展趋势等做简单介绍,供...
2018-11-05 11:30:56 5033 5
原创 C++类的构造函数和析构函数
C++面向对象编程小贴士(一)1. 头文件(Header)中的防卫式声明2. 构造函数(constructor)C++编程中有一些规范要注意。1. 头文件(Header)中的防卫式声明在头文件complex.h中,为了避免已经存在该名字的头文件,可以进行防卫式的声明,形式如下:#ifndef __COMPLEX__#define __COMPLEX__...#endif2. 构造...
2018-11-02 21:50:34 1073
原创 C++中关键字const的用法
C++中关键字const的用法1. 定义常量2. 函数内const是C++的一个关键字,现在对它的用法做一个小结。1. 定义常量在C中,如果要频繁的使用某一个常量,可以利用宏定义来利用一个符号定义这个常量,以后用到这个常量的地方就用这个符号代替即可,这样修改这个常量的值也方便了很多。在C++中,我们可以利用const替代宏定义,具体代码如下:#define M 15const int N...
2018-11-02 21:10:48 1030 1
原创 C/C++避免头文件重复包含的方法
C/C++避免头文件重复包含的方法1. #ifndef2. #pragma once3. 混合使用在实际的编程过程中,因为会使用多个文件,所以在文件中不可避免的要引入一些头文件,这样就可能会出现一个头文件被 include 多次,在C/C++中有几种不同的方式可以解决这个问题,总体功能相差不大,但依然存在细微差别。1. #ifndef格式如下:#ifndef __COMPLEX__#de...
2018-11-01 14:09:54 8424
原创 PS常用快捷键
PS常用快捷键1. PS工具快捷键2. 常用的通用快捷键2.1 文档操作2.2 画面显示操作2.3 其他操作3. 图层操作的快捷键4. 图像调整操作快捷键5. 移动工具模式快捷键6. 选区类工具模式快捷键6.1 选框工具模式6.2 套索工具模式6.3 快速选择工具模式7. 画笔工具模式快捷键声明:本文是Photoshop CC 2017的快捷键,其他版本可能略有差异。1...
2018-10-25 21:51:17 4055
原创 印刷品常用术语
印刷品常用术语1. PPI2. DPI3. LPI4. CMYK5. 出血1. PPIPPI (Pixels Per Inch) 是像素密度 或 分辨率 ,表示的是 图片中每英寸所拥有的像素数量 。常用印刷品的 PPI 常规要求如下:印刷品种类PPI洗印照片300或以上杂志、名片等印刷物300海报、高清写真96~200网络图片、网页界面...
2018-10-23 21:02:26 914
原创 常见海报的尺寸
常见海报的尺寸1. 一般海报尺寸(普通海报尺寸)2. 宣传海报尺寸、商用海报尺寸3. 标准海报尺寸4. 电影海报尺寸5. 招聘海报尺寸6. 印刷纸张规格7. 展板(KT板)8. X展架,易拉宝尺寸1. 一般海报尺寸(普通海报尺寸)42cm × 57cm (宽 × 高),大度四开57cm × 84cm (宽 × 高),大度对开2. 宣传海报尺寸、商用海报尺寸50cm × 70cm (宽 ×...
2018-10-21 20:47:14 171975
原创 C++分割带逗号的字符串
C++分割带逗号的字符串1. 解决方法2. 代码实现我们知道,C++默认通过空格(或回车)来分割字符串输入,即区分不同的字符串输入。但是有时候,我们得到的字符串是用逗号来分割的,给我们使用者带来极大的不便。那么,有什么办法能更加方便的使用这些字符串呢?其实,C++提供了一种方法(我目前所知道的)来解决这个问题。1. 解决方法C++提供了一个类 istringstream ,其构造函数...
2018-09-24 10:27:53 26453 1
原创 [LeetCode] 279. Perfect Squares 完全平方数
[LeetCode] 279. Perfect Squares 完全平方数问题描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.1. 数...
2018-09-23 10:15:43 3158
原创 C++中cout的使用
C++中cout的使用1. cout使用的三种方式2. cout和i/i++/++i的组合使用3. 以不同进制输出数字4. 输出数字位数的控制5. 强制显示小数点和正负号6. 设置宽度和对齐方式7. 设置填充字符8. iomanip库用法总结cout 是C++中 ostream 类型的对象,该类被封装在 < iostream > 库中,该库定义的名字都在命名空间 std 中,所以 c...
2018-09-21 08:59:46 216291 15
数据结构实现(C++版)
2018-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人