自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序算法----归并排序

排序算法,归并排序

2022-06-08 16:37:26 190 2

原创 C++ 虚析构和纯虚析构

使用C++多态特性的时候,实际上是父类的指针或者引用指向子类的对象。若子类中有些属性是通过new操作符开辟到堆区的话,之后再通过delete操作符析构父类的对象却无法调用到子类的析构函数,必然存在内存泄漏的隐患。创建一个名为Animal的父类在类里,为构造函数,析构函数以及虚函数分别做输出打印,方便后面观察。 Speaking函数加入virtual关键字是实现多态的必不可少的一个条件(子类要重写父类的虚函数),具体可以参考之前一篇https://mp.csdn.net/mp_blog/cre

2021-08-03 14:59:47 230

原创 排序算法----插入排序和希尔排序

假设有这么一个数组:int Array[20] = {15, 3, 6, 8, 2 ,11 ,12 ,19 ,1 ,7 ,17 ,20 ,4 ,13 ,18 ,10 ,5 ,16 ,14 ,9};如下的柱状图,Index表示数组的下标,Value表示数组下表对应元素的值,即Array[0] = 15, Array[1] = 3, Array[2] = 6 , ……插入法排序:我们通常整理扑克牌的时候,习惯按照某个顺序(升序或者降序)。当抓牌的过程中正是按照顺序一张一张插入到已经排好的..

2021-04-28 17:58:58 290 2

原创 C++中的多态

多态是C++面向对象三大基本特性之一(封装,继承,多态)。多态相对于其它两个特性是相对比较复杂的。多态又分为静态多态和动态多态,通俗点的解释就是一种表像多种形态(纯粹个人理解)。静态多态又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数。例如,函数重载,运算符重载动态多态是利用派生类和虚函数相结合的形式实现运行时的多态,即在系统编译的时候并不知道程序将要调用哪一个函数,只有在运行到这里的时候才能确定接下来会跳转到哪一个函数。静态多态和动态多态本质的区别:静态多态----地

2021-03-28 03:32:44 524

原创 C++中浅拷贝导致堆区内存重复释放

在C++中,编译器为某一个类提供了3个默认函数,其中包括默认的构造函数,默认的赋值构造函数(又叫拷贝构造函数),默认的析构函数。默认构造函数----编译器提供的无参的默认函数1. 如果程序员自己不提供默认的函数,则编译器会自己创建一个默认构造函数;如果程序员自己定义一个有参的构造,则编译器不会在提供默认的无参构造函数。2. 如果自己定义一个有参的构造,则编译器不会在提供默认的无参构造函数。默认析构函数----编译提供的默认析构函数是空实现,没有任何的代码,如果想要释放堆区的数据,需要程序员自

2020-09-01 20:00:02 3344 6

原创 C#学习笔记基础篇之运算符

JAVA和C/C++语言,大多数基本类型,例如int,double这样的值类型必须包含一个值,但是不能为空值(null),只有引用类型(String和Object对象)可以为空值(null)。但是和JAVA和C/C++语言不同的是,C#可以允许值类型为空,这样做还是很有用的,尤其是在处理数据库操作或者解析JSON/XML文件时?运算符此操作符解读为可空操作符泛型使用System.Null...

2020-01-06 10:43:31 266

原创 C#学习笔记暖身篇之胡侃

C#是微软公司 .NET windows网络框架的主角,学习C#也有一段时间了,网上很多文章都说C#和C++非常相似,我个人认为C#更接近于JAVA语言,为什么更接近于JAVA语言?C#和JAVA都没有头文件的概念,C#文件的后缀名是cs,JAVA语言的后缀名是java,不会像C++一样有头文件的概念(.hpp文件),变量及函数都是放在一个文件(cs)中; C#和JAVA没有指针的概念,取而...

2020-01-03 19:03:54 250

原创 深度搜索的应用----环路最小路径

环路最小路径问题:就是熟称的旅行者问题,也叫TSP算法。假设有五个城市A,B,C,D,E。如果旅行者从A城市出发,历经其它各个城市,最终又回到A城市,且其中每个城市只能经过一次。求环路中最短的路径就是所谓的旅行者问题。我们依旧可以采取DFS的算法解决该问题。本题的思路是利用深度搜索进行穷举,把所有的路径都走一次,找到一个最短的路径。当然中途可以剪支。要求输入,例如:5

2015-08-24 14:58:25 971

原创 广度搜索的应用实例

假设下图是中国传统的象棋棋盘的一部分:在象棋中,“馬”走“日”的规则,如上图,一同是以上8个方向,红色的旗子是“馬”要攻击的对象,请找出攻击的最短路径的步数下面2个箭头所指的路径都是到达红色目标的路径(当然也许并不是最短路径)要求输入:M, N        //M代表一共有多少行,N代表一共有多少列StartX SrartY EndX EndY例如:9 9

2015-08-01 02:20:47 645

原创 生长树模型

有这么一颗树,按照一定的规则进行成长:1)      F : 表示在原来的方向的基础上水平生长,即在原来的方向的基础上画一横2)      + : 增加45度3)      -  : 减小45度4)      [ :  记录该节点末的当前状态,下次变化从该节点末开始(相当于压入堆栈push操作)5)      ] :  从上次记录的节点末恢复操作(相当于出栈操作pop)

2015-07-31 23:01:11 1268

原创 深度搜索的应用----有向图的连通性

有向图的连通性,首先看一下下面2个图,在图1 中A->B-C->A,那么我们就说这个有向图存在环路。在图2中A->B->C, A->C,无法形成一个环路,则称A,B,C三点不存在环路                                              图1

2015-07-23 18:49:05 3849

原创 深度搜索的应用----无向图的连通性

题目:有这么一个无向图,如下:请找出这个图中的关键节点。关键节点的意思就是:如果去掉某一个点,剩余其它所有的点都不能连接在一起,则该节点就成为关键节点。如去掉节点3,如下图:去掉节点3以后,很明显所有的节点并不能完全连接,那么节点3就是这个无向图中的一个关键节点。如果去掉节点6,如下图所示:去掉节点6以后,很明显所有的节点依然可以完全连接

2015-07-16 02:30:25 730

原创 典型的递归算法

原题:一个完整的纸板有N*N个小纸板组成N×N (N = 2^K; 1 ≤ K ≤ 7; K =自然数),纸板上一共有2种颜色,1----蓝色,0----白色如下图所示: 需要按照如下的规则进行切割:1.  如果一张完整的纸板的颜色完全相同了,就不用再进行切割,如果颜色一致:全是蓝色纸板的颜色,蓝色纸板总数加1,如果是白色的话,白色纸板的总数加12.  如果不是同一个颜

2015-07-14 01:24:45 455

翻译 迷宫算法(二)

接着上一个迷宫算法,我们进一步求解----寻找迷宫中从起点到结束点的步数:如下图所示的矩阵,可以看出一共有4条路径从入口到出口:1. 紫色背景的路径2. 绿色背景的路径3. 绿色背景和紫色背景交互产生的2条路径。

2015-07-13 14:07:50 516

翻译 迷宫算法(一)

迷宫算法的基本解题思路就是:递归算法分析:走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程式应就可以理解。用1代表墙壁,0代笔路径。1----wall;0----path注:当走过该店后,也置为1,表示已经走过了,不能再走该点。

2015-07-05 23:10:23 923

原创 Android Service 的使用(五)----如何实现AIDL文件中含有对象的调用

Android Service AIDL

2015-07-05 23:00:10 507

翻译 开灯问题

有N盏灯,编号为1~N。第一个人把所有的等打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推,一共有K个人,问最后有哪些灯开着?输入N和K,输出开着的灯的编号。K。样例输入:7 3样例输入:1 5 6 7分析:1.    从题意可得最多有1000盏灯,所以

2015-07-05 01:10:01 549

原创 Android Service 的使用(四)----进程间的Service的调用

上一篇文章我们介绍过AIDL作为接口可以实现远程调用,但是实际上我们还是实现一个绑定的Service的使用,没有具体实现进程间的通讯。所以这一篇文章是对上一篇文章的补充完善,可以具体实现进程间的数据通讯。1. 首先完成服务端的程序a. 在服务端建立AIDL文件。建立的方式和之前是一样的,这里就不在赘述了,直接给出客户端AIDL的代码。package com.android.zi

2012-03-21 17:06:02 358

原创 Android Service 的使用(三)----远程Service的调用

有了前面2篇文章的基础,我们介绍最后一种Service的使用,远程绑定Serivce。为什么需要这种远程绑定?因为android每个组件都是运行在自己的进程中,他们之间的数据是独立的,但是在想要在进程中传递一些数据,为了解决进程中的通讯问题:Android采用了一种轻量级的实现方式PRC(Remote Procedure Call)来完成进程之间的通讯,并且Adroid通过接口定义语言AIDL(A

2012-03-19 17:48:56 376

原创 Android Service 的使用(二)----Service的绑定使用

上次我们留下一个疑问,其实问题的答案很简单,就是Service只在第一建立时才会创建onCreate()方法,一旦Service已经建立成功,当程序再次调用时不在执行onCreate()方法,而直接执行onStartCommand(),也就是说onStartCommand()可以不止一次被调用。顺带说一句public int onStartCommand(Intent intent, int

2012-03-19 17:40:23 421

原创 Android Service 的使用(一)----简单Serivce的启动和停止

学习Android也有一段时间了,最近很想总结一下之前学过的知识点,不断的经验总结从中找到差距,查漏补缺才可能有长足的进步。下面就简单介绍一下Android四大基本组件Service的使用方法,希望对刚学习Android的新人有所帮助,同时也欢迎Android的老鸟们给点宝贵意见,让我知道自身不足,不断的加强巩固。首先创建一个Service方法:1. 右键点击所选取的包名“new”->“C

2012-03-19 17:34:01 778

空空如也

空空如也

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

TA关注的人

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