自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十大经典排序算法

0、算法概述0.1 算法分类比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b前面;不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总的操作次数

2021-03-13 09:21:54 197 1

原创 深度探索C++对象模型 第4章 Function语意学 4.1 Member的各种调用方式

Member的各种调用方式一、非静态成员函数二、虚拟成员函数三、静态成员函数四、名称的特殊处理(mangling机制)virtual函数是在20世纪80年代中期被加进来的,并且一开始受到了很多的之一静态成员函数时最后被引入的一种函数类型。它们在1987年的Usenix C++研讨会的厂商研习营中被正式提议加入C++中一、非静态成员函数c++的设计准则之一是:非静态成员函数至少必须和一般的非成员函数有相同的效率float magnitude3d(const Point3d *_this) {

2020-12-03 23:09:40 152

原创 深度探索C++对象模型 第3章 Data语意学 3.4 继承与data member

在继承关系下,一个类的数据成员规则如下:派生类的数据成员为:其自身的数据成员加上基类的数据成员的综合派生类与基类的数据成员的排列次序并未在C++标准中强制规定:理论上编译器自由安排。在大部分编译器上,基类的数据成员总是先出现当有虚基类时,上面的规则就会失效(具体见下面讲解)下面我们将从“单一继承不含virtual functions”、“单一继承并含有virtual functions”、“多重继承”、“虚拟继承”等四种情况介绍对象布局模型一、单一继承不含virtual functions(没

2020-12-02 18:33:24 201 1

原创 深度探索C++对象模型 第3章 Data语意学 3.2 data member的布局 3.3 Data member的存取

3.2 data member的布局一、数据成员的布局规则class Point3d{public: /*...*/private: float x; static List<Point3d*> *freeList; float y; static const int chunkSize = 20; float z;};每一个Point3d对象是由3个float组成,其在内存中排列的次序是x,y,z;static静态对象不属于某个特定的对象,其存放在数据段中二

2020-12-02 15:11:36 167

原创 深度探索C++对象模型 第3章 Data语意学 3.1 data member的绑定

每一个class object必须有足够的大小以容纳它所有的nonstatic data members。有时候其值较大,原因是:1、由编译器自动加上额外data members,用以支持某些语言特性(主要是各种virtual特性)2、因为alignment(边界调整)的需要。(如:一些机器要求结果为4bytes的倍数)。...

2020-12-02 10:51:10 112

原创 深度探索C++对象模型 第1章 关于对象

一、三、四章第1章 关于对象1.1 c++对象模型三.1 无继承下的C++对象模型**三.2 有继承下的C++对象模型****四 对象模型如何影响程序**1.2 关键词所带来的差异1.3 对象的差异欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U

2020-12-01 19:50:08 112

原创 《Effective c++》学习笔记

《Effective c++》学习笔记第1章 让自己习惯C++01 视c++为一个语言联邦02 尽量以const、enum、inline替换#define03 尽可能使用const04 确定对象被使用前已先被初始化第2章 构造、析构、赋值运算05 了解C++默默编写并调用哪些函数06 若不想使用编译器自动生成函数,就该明确拒绝07 为多态基类声明virtual析构函数08 别让异常逃离析构函数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列

2020-11-30 17:15:18 346

原创 STL源码分析——第五章 关联式容器

红黑树(set、map、multiset、multimap的底层机制实现)每个节点不是红色就是黑色。根节点为黑色。如果节点为红,其子节点必须为黑。任一节点至 NULL 的任何路径,所含之黑节点数必须相同。插入节点根据 X 的插入位置及外围节点的颜色,有了四种考虑。一个由上而下的程序假设新增节点为A,那么就沿着 A 的路径,只要看到有某节点 X 的两个子节点皆为红色,就把 X 改为红色,并把两个子节点改为黑色。RB-tree 的迭代器前进和后退操作均调用基层迭代器。RB-.

2020-11-28 20:56:38 148

原创 STL源码分析——第四章 序列式容器

容器按存储方式分为:序列式容器、关联式容器heap内含一个vector,priority-queue内含一个heap,stack和queue都内含一个deque;set/map/multiset/multimap都内含一个RB-TREE,hash-xx都内含一个hashtable。序列式容器:其中的元素都可序,但未必有序1、vector容器vector与array区别:array是静态空间,配置了后无法改变vector是动态空间,随着元素的加入,内部机制会自行扩充(扩充机制为:配置原

2020-11-28 20:29:04 154

原创 STL源码分析——第三章 迭代器概念与traits编程技法

1、STL中心思想是将数据容器与算法分开,彼此独立设计,迭代器是将算法与容器结合的胶着剂2、 迭代器的行为类似于指针,最重要的操作是解引用*(dereference)和成员访问->,因此需要对operator*与operator ->进行重载3、在算法中使用迭代器,可能会用到相应型别,常用型别有五种value_type、difference_type、pointer、reference、iterator_category为了从类类型、普通指针类型、const指针类型中获得相应型别,使用的方

2020-11-28 16:16:39 116

原创 STL源码分析——第二章 空间配置器

第二章 SGI空间配置器**1、allocator(标准的空间配置器,但是不建议使用)**1.1operator new的简单封装1.2operator delete的简单封装**2、alloc(特殊的空间配置器,内存碎片化处理较好)**功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章

2020-11-27 22:18:16 113 1

原创 哈夫曼树的构造(java实现,线性表顺序存储结构)

哈夫曼树的构造:存储结构:线性表、线性存储结构实现方法:createHuffmanTreeimport java.util.*;public class HuffmanTreeDemo { public static void main(String[] args) { /* 哈夫曼树的构造: 存储结构:线性表、线性存储结构 实现方法:createHuffmanTree */ Scanner scan = new Scanner(System.in);

2020-07-27 17:14:07 814 1

原创 06 Saving James Bond - Easy Version(java实现)

Saving James Bond - Easy Version (25分)This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of

2020-07-14 22:06:02 127

原创 06 列出连通集 (java实现)

列出连通集 (25分)给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1,v2,…vk​​ }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:8 60 70

2020-07-14 15:47:56 237

原创 05 File Transfer(java实现)

File Transfer (25分)We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one computer to another. Is it possible to send a file from any computer on the network to any other?Input S

2020-07-13 19:00:26 427

原创 05 堆中的路径(java实现)

堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26

2020-07-13 13:03:14 168

原创 04 Root of AVL Tree求AVL树的根节点(java实现)

Root of AVL Tree (25分)An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. F

2020-07-12 19:19:35 183

原创 04 二叉搜索树相同比较(java实现)

是否同一棵二叉搜索树 (25分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给

2020-07-12 15:35:16 250

原创 03 Tree Traversals Again(java实现)

Tree Traversals Again (25分)An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); p

2020-07-10 21:32:46 120

原创 03 List Leaves (java实现)

Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of node

2020-07-10 09:50:43 82

原创 03 树的同构(java实现)

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点

2020-07-09 23:39:54 192

原创 04 Pop Sequence (java实现,附图文解析)

Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, …, N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain

2020-07-08 23:53:22 235

原创 03 Reversing Linked List (java链表实现,附解析图画)

Reversing Linked ListGiven a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.Inpu

2020-07-08 17:14:26 171

原创 02一元多项式的乘法与加法运算(java链式存储结构实现)

设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1输出样例:15 24 -25 22 30 21 -10 20 -

2020-07-08 16:31:25 1181

原创 02一元多项式的乘法与加法运算(java顺序存储结构实现)

一元多项式的乘法与加法运算(java顺序存储结构实现)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出 乘积多项式 以及 和多项式 非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。import java.util.Scanner;public class demo02

2020-07-05 17:26:25 843

原创 01最大子列和问题进阶版(java实现)

01最大子列和问题进阶版依据在线处理方法,进行改进,输出时,不仅输出最大子列和,并且输出对应数组的起点和终点下标。分别对应maxsum, m, nimport java.util.Scanner;public class demo01MSS { public static void main(String[] args) { /** 最大子列和问题实现 通过键盘录入数据,nextLine函数返回输入回车之前的所有字符 输出最大和的数值,及其对应数组的下标 */

2020-07-05 13:50:54 89

原创 01求解最大子列和问题(java实现四种方法)

这里写自定义目录标题01求解最大子列和问题01求解最大子列和问题import java.util.Scanner;public class demo01{ public static void main(String[] args) { /** 最大子列和问题实现 通过键盘录入数据,nextLine函数返回输入回车之前的所有字符 */ Scanner scan = new Scanner(System.in); System.out.print("请输入数据

2020-07-05 13:29:23 181

原创 帕累托最优解集

帕累托最优解集A、==帕累托最优的若干定义==:1)支配与非支配2)帕累托最优前沿B、==帕累托非支配排序的遗传算法NSGA-Ⅱ==1)非支配排序2)拥挤度A、帕累托最优的若干定义:1)支配与非支配如上图所示,若表示为机票,既要考虑飞行时长也要考虑机票价格,保证出行最便捷。A与C相比,A耗时为2,花费为7.5;C耗时为3,花费也为7.5,那么方案A要比C优秀,那么A支配C。但是,纵观全部解,没有在耗时和花费两者全部比A优秀的方案,那么就称A为非支配。2)帕累托最优前沿A的耗时为2,花费

2020-06-15 20:58:58 16599 6

原创 JAVA开发实战经典 第二版 习题12.19 练习4 P452

import java.util.*;class Person implements Comparable<Person>{ private String name; private int score; public Person(String name, int score){ //定义构造函数 this.name = name; this.score ...

2020-03-13 15:44:40 216

原创 JVM垃圾回收机制

在b站上找到了一期黑马程序员做的深入理解JVM垃圾回收机制的视频,感兴趣的可以直接去搜,我暂时当一个课代表,总结一下。为了了解JVM的垃圾回收机制,应当从以下四方面入手,1、JVM的基本组成;2、JVM的内存区域划分;3、内存区域的分配以及内存垃圾的回收;4、可视化监控垃圾回收工具。JVM的基本组成通常使用的javac命令,会将java文件编译为.class文件。这种.class文件可以在...

2020-03-06 14:35:53 77

空空如也

空空如也

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

TA关注的人

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