自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数值与字符(串)类型转换

数值与字符(串)类型转换char intstring intdouble stringstring charchar* string

2015-07-26 19:42:03 569

原创 广度优先搜索(BFS)

广度优先搜索(BFS)最短路径 层序遍历原理实现

2015-07-26 18:44:57 444

原创 最大公约数Greatest Common Divisor

Greatest Common Divisor 在数论和程序实现中都经常用到,很重要,也有很多方法

2015-07-12 11:22:25 515

原创 递归写法总结

递归写法总结递归是算法中的一种很重要思想。好的递归程序逻辑清楚,代码简洁,有时候时间上也非常高效;此外链表、二叉树等结构用递归算法一般都有鲜明优势。 往往递归问题口头说起来感觉十分清晰顺畅;而用代码实现起来确总感觉层峦叠嶂,不知从何下手,思路也越来越混乱不堪。

2015-05-18 13:07:44 3401

原创 一个有趣的 int 与 float 数据类型的小问题

一个有趣的 int 与 float 数据类型的小问题相同的存储空间,几个数量级差距的表示范围起源:重读 《C++ primer》看到基本类型里讲到: 1. 32位机器中,int 和 long 类型字长相同,为4 Bits (或 1 word). 对应的可表示数值范围同为2147483647 ~ -2147483648 2. 单精度浮点数 float 用一个字 (1 word) 表示,对应的可表示

2015-04-26 15:00:23 846

原创 const小结(C++)

const小结限定作用常量 指向常量的指针 常指针 常量数据成员 常量成员函数与指针引用合用做函数形参 做函数返回值使用精要去除添加const属性

2015-04-05 20:34:40 317

原创 static小结(C++)

static静态全局变量静态局部变量静态数据成员静态成员函数意义内存初始化用法

2015-03-28 23:42:44 355

原创 C++ 多态性总结

多态性是C++语言最重要的基本特征之一多态(polymorphism)/动态绑定使编译器能够在运行时决定使用基类中定义的函数还是派生类中定义的函数要素虚函数的前提是有基类及其派生类在基类中要有虚函数的定义: 成员函数的virtual声明必须通过基类类型的指针或者引用进行函数调用

2015-03-22 17:13:07 650

原创 三大构造函数和析构函数的自动调用小结

构造和析构函数是类的基础类中有构造函数、拷贝构造函数和赋值构造函数析构函数只有一个若没有定义这些函数,编译器会合成默认构造函数有些情况下会自动调用构造函数和析构函数,导致学习者忽视其调用过程。当涉及到继承和派生时,整个过程就更复杂这里自己定义了一些类型的构造函数,以观察构造和析构的过程代码如下#include <iostream>using namespace std;class A

2015-03-19 20:38:29 1679 2

原创 二叉查找树常用操作(接上篇)

二叉查找树是一种重要的数据结构二叉查找树常见的操作时间复杂度一般为O(h)O(h),hh为树的深度。此处补充二叉查找树中结点的搜索、删除,以及对应前驱、后继。此外前驱后继结点中还涉及到求子树的最大\最小元素。 要找前驱或者后继,需要添加指向父结点的指针。

2015-03-14 23:11:47 459

原创 二叉查找树的插入与有序输出

二叉查找树:插入和有序输出二叉查找树是常用的数据结构二叉查找树根结点比左儿子大,比右儿子小(或等)以任意结点为根节点的子树也满足上述规律结点数为nn,深度为hh的二叉查找树的操作以下操作时间复杂度均为O(h)O(h)因为这些操作都是逐层下降,每层只停留一次 1. 元素值查找 2. 插入元素(该操作将且仅将新元素插入为叶节点) 3. 删除元素二叉树遍历所有元素有序输出的复杂度为O(n)O(

2015-03-12 20:17:51 811

原创 快速排序算法

快速排序算法思路描述快速排序也是分治算法中的一种.分解问题:待排序列通过不断进行元素交换,被划分为两个子序列:左边的子序列小于主元,右边的子序列大于主元. 解决:然后递归调用快速排序,继续将子序列进一步划分直到子序列成单个元素.合并:就地排序,合成不需要额外的操作.关键点将序列划分为两个区间时候,需要两个标记,分别指向要与主元进行判别的元素和该元素要交换到的位置. 两个标记要根据判别结果

2015-03-09 21:08:03 347

原创 堆排序算法

堆排序算法可以将堆作为一种数据结构,利用这个数据结构的特点实现排序堆的性质(最大堆)堆的结构与二叉树类似,可以用数组或者Vector实现其结构最大堆的根元素比左右儿子都大,且任意子堆都满足该性质左右儿子的查找同二叉树,假设以数组的第一个数arr[0]arr[0]作为根结点,arr[i]arr[i]的父结点和左右儿子的位置: parent(i)=(i−1)/2left(i)=2i+1right

2015-03-06 20:31:15 441 1

原创 归并排序算法

归并排序算法归并排序是一种典型的分治算法分解:总是对排序区间内的元素以中点二分,分别对左右区间进行排序解决:归并排序不断递归调用自己,分解到底层后,待排序区间缩减为2个元素的比较合并:在递归分解的每一层上,都得到左右两边已经排序的子序列,需要将有序子序列合并到一个序列. 实质上 “解决”环节是在“合并”中一起完成的,因为分解到每组2个元素还可以继续分解成左右各1个元素,然后再逐层向上合并.合

2015-03-05 16:41:14 375

原创 动态规划学习与实例(2) 最长公共子序列

最长公共子序列LCS( longest common subsequence )问题描述一个给定序列的子序列是该给定序列中去掉0个或者多个元素,此处的子序列不要求必须连续.给定序列 XX 和 YY , 如果 ZZ 既是 XX 的一个子序列,又是 YY 的一个子序列, 则 ZZ 是 XX 和 YY 的公共子序列.找出给定序列 XX 和 YY 的最长公共子序列 LCSLCS.问题分析穷举方法:

2015-02-27 14:11:30 449 1

原创 插入排序算法实现与分析

插入排序思路描述维护一个已排序数组 1.将每次要处理的元素插入到已排好序的数组 2.插入位置之后的已排好序的元素后移 3.从头至尾遍历待排序元素数组关键点1.插入位置的判定:从后往前比较 2.比较的同时可以对已排序元素向后移位,注意保存被覆盖掉的待排序元素 3.边界条件,例如插入排序处理的是vector中的全部元素,而size()函数比元素个数大13 代码实现#include <iostr

2015-02-25 20:02:54 346

原创 动态规划学习与实例(1)

动态规划学习与实例(1)动态规划求解思路:分解最优子结构找出各级最优子结构间递推关系自底向上求解最优子结构表追溯到最优解示例:Problem1. 给定一个数字序列,找出其中最长子序列,子序列满足顺序递增。求解最长子序列的长度和对应的子序列。 Problem2. 给定一个数字序列,找出其中和最大的子序列,并求解子序列的长度和对应的子序列。

2015-02-25 13:48:39 349

空空如也

空空如也

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

TA关注的人

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