自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——红黑树与B树

红黑树是与2-4树等价的二叉树。因为其是二叉树,因此维持平衡的操作更简单。通常,红黑树由2-3或2-4树分裂而来。得到的子树的根保持黑色,但它的孩子结点会涂上红色。图中用白色替代红色。红黑树的根是黑色的,且每个红色结点都有一个黑色的父结点,且红色结点的孩子都是黑色的。当树为空的时候,新结点将是树的根,因此要添加黑色的结点;当树不为空时,则要添加红色的结点,否则会违背红黑树的特性。并且要知道,添加或删除项可能会改变红黑树中结点的颜色。B树:m阶多路查找树,有时...

2022-02-18 15:08:11 555

原创 数据结构——2-3树

2-3树是一颗一般查找树,其内部结点必须有2个或3个孩子。2-结点含有1个数据项s和2个孩子,与二叉查找树的结点一样。数据s大于结点的左子树中的所有数据,且小于右子树中的所有数据。3-结点含有2个数据项s和l,以及3个孩子。小于较小数据项s的数据出现结点的左子树中。大于较大数据项l的数据出现在结点的右子树中。介于s和l之间的数据出现在结点的中间子树中。因为2-3树能含有3-结点,所以它比二叉查找树更低,要使2-3树平衡,需要所有的叶子出现在同一层。所以2-3树是完全平衡树。 ...

2022-02-18 14:31:07 632

原创 C++——lambda表达式

根据算法接收一元谓词还是二元谓词,传递给算法的谓词必须按照规定数量接收参数。但有时我们希望可以操作更多参数,下面的程序只打印大于等于给定长度的单词。void biggies(vector<string> &words, vector<string>::size_type sz){ elimDups(words); // 将words按字典序排序,删除重复单词 // 按长度排序,长度相同的单词维持字典序 stable_sort(words.beg

2022-02-18 13:03:28 509

原创 C++——谓词

谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。标准库算法中的谓词分为两类:一元谓词和二元谓词,一元谓词意味着只接受单一参数,二元谓词意味着接受两个参数。元素类型必须能转换为谓词的参数类型。接受一个二元谓词参数的sort版本用这个谓词代替<来比较元素。提供给sort的谓词必须在输入序列中所有可能的元素值上定义一个一致的序。isShorter是一个满足这些要求的函数,可以将isShorter传递给sort。这样做会将元素按大小重新排序:// 比较函数,用来按长度排序单词{

2022-02-18 12:34:45 1768

原创 C++——顺序容器的删除

删除单个元素:list<int> lst = {0,1,2,3,4,5,6,7,8,9};auto it = lst.begin();while(it != lst.end()) if (*it % 2) //若元素为奇数 it = lst.erase(it); //删除此元素 else ++it;成员函数erase从容器中指定位置删除元素,在上面的程序中,每个循环步中,首先检查当前元素是否是奇数,如果是就删除该

2022-02-18 11:28:19 757

原创 数据结构——AVL树旋转

AVL树是一颗二叉查找树,需要逻辑规则来检查并修正可能出现的不平衡。package TreePackage;public class AVLTree<T extends Comparable<? super T>> extends BinarySearchTree<T> implements SearchTreeInterface<T>{ public AVLTree() { super();

2022-02-18 10:00:53 768

原创 数据结构——二叉搜索树的删除操作

公有方法remove应该仅有一个参数(entry), 所以与调用私有递归方法addEntry的方法add一样,remove将调用一个私有递归方法removeEntry。给removeEntry传递的是树根,而不是树本身。因为该方法可能从树中删除根节点,所以总要保留指向树根的引用。因此给removeEntry再传递外一个参数——oldEntry, 然后在该方法中用删除的项来改变它的值。所以,removeEntry的头应该是private BinaryNode<T> r...

2022-02-18 08:04:55 1226

原创 数据结构——二叉查找树(BST)

在二叉查找树中的查找,类似于在数组上的二分查找,但二叉查找树是查找两棵子树中的一棵,而不是查找数组的一半。虽然用树和子树很容易表示递归算法,但根节点同样可以用来查找或操作其后代结点。下面是算法,它的描述接近于实际的实现:Algorithm bstSearch(binarySearchTreeRoot, desiredObject)// 在一颗二叉查找树中查找给定的对象// 如果找到对象则返回真if(binarySearchTreeRoot是空的) return falseels

2022-02-17 21:14:18 260

原创 C++——委托构造函数

C++11标准扩展了构造函数初始值的功能,使我们可以定义委托构造函数。一个委托构造函数使用它所属类的其他构造函数执行自己的初始化过程被称为委托构造。和其他构造函数一样,一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员初始值列表只有一个唯一入口,就是类名本身。和其他成员初始值一样,类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。我们使用委托构造函数重写Sales_data类,重写后的形式:class Sales_data {public:

2022-02-17 17:16:38 797

原创 C++——构造函数

有时可以忽略数据成员初始化和赋值之间的差异,但并非总能这样。如果成员const或是引用,则必须将其初始化。类似的,当成员属于某种类型并且该类没有定义默认构造函数时,也必将这个成员初始化。class ConstRef {public: ConstRef(int ii);private: int i; const int ci; int &ri;};和其他常量对象或者引用一样,成员ci和ri都必须被初始化。因此,如果我们没有为他们提供构造函数初始值的话将引

2022-02-17 16:56:21 76

原创 C++——成员函数和友元

既然友元具有访问权限,那么当把一个成员函数声明成友元的时候,我们必须要指明该成员函数属于哪个类:class Screen { // Window_mgr::clear必须在Screen类之前被声明 friend void Window_mgr::clear(ScreenIndex); // Screen类的剩余部分};想要令某个成员函数作为友元,我们必须仔细组织结构。首先定义类,其中声明clear函数,但不能定义。在clear使用Screen的成员之前必须先声明Scree

2022-02-17 16:07:05 217

原创 C++——友元函数

类可以把普通的非成员函数定义成友元,也可以把其他的类定义成友元,还可以将其它类的成员函数定义成友元,友元函数还可以定义在类的内部。举个例子:Window_mgr类的某些成员可能需要访问Screen类中的内容。假如我们为Window_mgr添加一个clear成员,负责把指定Screen内容设置为空白,为了完成此目的,clear需要访问Screen的私有成员;而想要实现这样的功能,Screen需要把Window_mgr指定成友元:class Screen { // Window_mgr的成

2022-02-17 15:34:27 217

原创 C++——指针与多维数组

与使用一维数组一样,程序使用多维数组的时候,也会自动转换为指向数组首元素的指针。int ia[3][4]; // ia大小为3的数组,每个元素是含有4个整数的数组int (*p)[4] = ia;// p指向含有4个整数的数组p = &ia[2]; // p指向ia的尾元素(*p)意味着p是一个指针。[4]表示指针p所指的是一个维度为4的数组,再观察左边,数组中的元素是整数。因此,p是指向含有4个整数的数组的指针。C++11标准通过使用auto或者decltype尽

2022-02-14 14:20:55 1221

原创 C++——复杂的数组声明

和vector一样,数组能存放大多数类型的对象。int *ptrs[10]; //ptrs是含有10个整型指针的数组int &refs[10] = /* ? */; //错误:不存在引用的数组int (*Parray)[10] = &arr; //Parray指向一个含有10个整数的数组int (&arrRef)[10] = arr; //arrRef引用一个含有10个整数的数组对修饰符的数量并没有特殊限制:int *(&arr

2022-02-14 13:54:03 432

原创 C++——迭代器的运算

使用迭代器的经典算法是二分搜索。二分搜索从中间开始搜索,如果中间元素刚好是目标元素,搜索完成,如果不是,在前半部分或是后半部分继续搜索,重复二分搜索过程,直到找到目标元素:迭代器下的二分搜索:// text必须有序// beg和end表示搜索范围auto beg = text.begin(), end = text.end();auto mid = text.begin() + (end - beg)/2; // 初始状态下的中间点// 当还有元素尚未检查并且我们还没找到目标元素时:wh

2022-02-14 11:11:14 474

原创 C++——迭代器

事实上,访问对象既可以使用下标,还可以使用一种更通用的方式——迭代器。除了vector容器,标准库中还有几种其他容器,共同点是都可以使用迭代器,但其中只有少数几种才支持使用下标运算符。严格来说string不属于容器类型,但string支持类似容器类型的操作。例如和vector容器一样支持下标运算符,也支持迭代器。迭代器:类似于指针,迭代器会提供对于对象的间接访问。对于迭代器来说,它的对象可能是容器中的元素或者string中的字符。使用迭代器可以访问元素,也可以移动元素。有效的迭代器可以指向某个元

2022-02-14 10:53:50 1494

原创 数据结构——ADT队列的链式实现

框架:public final class LinkedQueue<T> implements QueueInterface<T>{ private Node firstNode; private Node lastNode; public LinkedQueue() { firstNode = null; lastNode = null; } private class No

2022-02-13 13:31:23 463

原创 C++——标准库类型vector

如果vector对象的元素是内置类型,则元素的初始值自动设置为0,若是类类型,则由类默认初始化。vector<int> ivec(10); // 10个元素,每个都初始为0vector<string> svec(10); // 10个元素,每个都初始化为空string对象若只确定了元素的数量,则只能使用直接初始化而不能使用拷贝初始化:vector<int> vi = 10; // 错误,只知道数量的情况下必须使用直接初始化对向量大小

2022-02-12 16:58:27 230

原创 C++——拷贝初始化与直接初始化

如果使用(=)初始化一个变量,实际执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去。如果不使用等号,则执行的是直接初始化。当初始值只有一个时,使用直接初始化或者拷贝初始化都行。但当初始化要用到多个值时,只能使用直接初始化:string s5 = "hiya"; //拷贝初始化string s6("hiya"); //直接初始化string s7(10, 'c'); //直接初始化,s7的内容是cccccccccc对于多个值进行初始化时,使用拷贝初始化:

2022-02-12 16:41:12 1120

原创 C++——auto类型说明符与decltype类型指示符

C++11标准引入了auto,编译器通过初始值来推算变量类型。有时会与初始值类型不一致,但编译器会适当对结果进行修改,并且会忽略顶层const,而保留底层const。要在一条语句中定义多个变量时,要记得&和*只从属于某个声明符,而非基本数据类型,因此初始值必须是同一种类型.有时会希望从表达式的类型推断出要定义的变量的类型,但不想用该表达式的值初始化变量。因此C++11 会引入decltype. 用来选择并返回操作数的数据类型。在此过程中,编译器会对表达式进行分析,得到返回值类型,但不

2022-02-12 15:01:04 190

原创 C++——指针与const

与引用一样,可以令指针指向常量或非常量。类似于常量引用,指向常量的指针不能用于改变其所指对象的值。如果想要存放常量对象的地址,只能使用指向常量的指针:const double pi = 3.14; // pi是一个常量,值不能发生改变double *ptr = &pi; // 错误, ptr只是一个普通的指针, 无法指向一个被const修饰的量const double *cptr = &pi; // 正确,cptr同样被const修饰,可以指向被const修饰的量*cptr

2022-02-12 12:46:35 868

原创 CSS——盒子模型

验证:<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ width: 100px; height: 100px; background-color: green; margin-left: 100px; borde.

2022-02-10 17:44:50 399

原创 传统图像融合算法

像素级图像融合算法通常分为:空间域算法、变换域算法、低秩矩阵算法、仿生算法。空间域算法直接对像素进行处理变换域算法对变换系数进行处理低秩矩阵算法对矩阵特征进行处理,然后使用恢复算法得到图像仿生算法利用特殊算法进行图像融合,例如蚁群算法和神经网络算法。1.空间域算法:常见的空间域算法包括加权平均法和PCA法加权平均法对多幅图像的对应像素点进行加权处理,公式为:其中α为对应权值,并且F为处理后的图像,为待处理的源图像2.PCA方法:PCA为一种图像变换方法。.

2022-02-10 11:34:37 4871

原创 方法toArray应该返回复制而不是数组bag

通过声明数组bag是类ArrayBag的一个终态数据成员,可知变量bag中的引用不能改变。虽然这是一种声明数组的的好做法,但数组元素bag[0], bag[1], ...的值还是可以改变的。但必须要阻止客户从bag中得到对数组的引用。否则会泄漏数组内容容易遭受恶意毁坏。例如:public String[] toArray(){ return bag;}这个简单的定义肯定能将包元素所在的数组返回给客户,例如语句:String[] bagArray = myBag.toArr

2022-02-10 11:26:42 118

原创 CSS——浮动与定位

浮动效果:<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> img{ float: left; } </style> </head> <body> <img src="img/18e76135e89

2022-02-10 09:18:10 174

原创 CSS——基本选择器

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> /*基本选择器下的元素选择器 获取页面上所有该类元素*/ h1{ color: red; } i{ color: blue; } /* 应用场合:不同类型标签.

2022-02-09 21:28:46 61

原创 CSS——书写方式

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <!--Internal style--> <style type="text/css"> h1{ color: royalblue; font-family: "宋体"; } </style> </hea.

2022-02-09 19:34:46 58

原创 form表单——4.HTML5新增元素

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form> <!--email--> <input type="email" name="email" /> <!--url--> <input t.

2022-02-09 19:00:16 58

原创 Web——Druid连接池的工具类

import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;/.

2022-02-08 20:55:37 69

原创 Web——Druid基本使用01

/** Druid demo* */public class DruidDemo { public static void main(String[] args) throws Exception { //import jar //define the config //load config Properties pro = new Properties(); InputStream is = DruidDem.

2022-02-08 20:36:41 296

原创 Web——C3P0数据库连接

xml file should add under to the src,and before it, I add the c3p0-0.9.5.2 and mchange-commons-java-0.2.12 and mysql-connector-java-8.0.13 to the libs. You can downloads them by baidu or some webs.This is the xml file<c3p0-config> <default-c.

2022-02-08 20:06:00 84

原创 form表单——3.表单元素PLUS

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="" method="get"> <input type="text" name="uname" placeholder="please load your id informa.

2022-02-08 18:49:29 326

原创 form表单——2.表单元素

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="" method="get"> <!--表单元素--> <!--文本框 input标签使用很广泛,通过type属性的不同值,来表现不同的形态 .

2022-02-08 18:10:58 407

原创 form表单——1.模拟百度搜索

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>百度一下,你就知道</title> <link rel="shortcut icon" href="https://www.baidu.com/favicon.ico" type="image/x-icon" /> </head> <body> <for.

2022-02-08 17:37:44 177

原创 在数组中寻找众数——神级技巧

在数组中寻找众数的神级技巧。

2022-01-23 00:49:01 2058 7

原创 贪心算法_分发饼干问题

分饼干问题是算法初学者尝试贪心算法的入门级问题

2022-01-22 00:06:24 1214

原创 二叉树_斜月沉沉藏海雾,碣石潇湘无限路

刚好看见了二叉树的一道题,那今天就简单介绍一下二叉树。与其说二叉树是一种算法,不如说是一种特殊的容器。二叉树由3部分组成:左子节点,右子节点,自身。

2022-01-20 23:58:03 306

原创 Nim游戏_井底点灯深烛伊,共郎长行莫围棋

现在来玩一个游戏:双方各从围棋中轮流抓出1到3枚围棋,假设双方都不知道围棋共有多少颗,问在围棋最多还剩几颗的时候就可以判断胜负。

2022-01-20 00:05:26 2151

原创 基本位运算的相关知识_乾坤两位,独制文言

先了解一下位运算的知识:与&:0&0=0 0&1=0 1&0=0 1&1=1或|:0|0=0 0|1=1 1|0=1 1|1=1异或^:0^0=0 0^1=1 1^0=1 1^1=0取反~:~1=0 ~0=1左移<<:左边的二进制位丢弃,右边补0右移>>:正数左补0,负数左补1,右边丢弃无符号左移<<<:左边的二进制位丢弃,右边补0无符号右移>>>:忽略符号位,空位都以0补齐

2022-01-18 20:50:02 628

原创 基础算法——深度优先经典——岛屿问题

在此之前,我曾见过许多的学生提及算法唯恐避之不及,几乎所有人都知道算法只不过是思考问题的方法,但很遗憾,大部分人并未体会到算法的乐趣所在,而是被所谓的一些优秀者口中的“神圣”的算法策略给唬住,而不敢向前。

2022-01-17 23:43:17 3169

空空如也

空空如也

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

TA关注的人

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