自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

听老罗娓娓道来

分享经验分享快乐

  • 博客(65)
  • 收藏
  • 关注

原创 UTF-8

***UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxx...

2018-05-13 20:28:02 234

原创 显示实现接口在什么时候用

using System; using System.Collections.Generic; using System.Runtime.InteropServices;namespace CSharp内功修炼 { ———————————–显示实现接口代码 public interface Math { void Test(T t); ...

2018-05-02 15:20:41 348

原创 基本数据类型int转btye[]数据类型的方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharp内功修炼 { /// /// 测试int类型数据转字节数组 /// int...

2018-05-02 14:17:44 608

转载 c#中的托管资源和非托管资源的释放问题

托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源。托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收。 非托管资源指的是.NET不知道如何回收的资源,最常见的一类非托管资源是包装操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。这类资源,垃圾回收器在清理的时候会调用Object.Finalize(...

2018-02-02 06:15:07 2409 1

原创 最短路径算法实现

什么是最短路径呢? 考虑到带权路径图,我们把一条路径上经过的权值之和是该路径的路径长度或者是带权路径长度。那么我来个案例,比如我们还是村庄之间修路,我们指定了一个村庄起点和终点,假如我们修路只能在由村庄之间修路的全部可能情况之中选择一种,也就是说我们想从我们指定的村庄开始修路,修到我们指定的目的地,我们找到那条开销最小的路径,也就是1权值最小。相比最小生成树,是整个村庄之间修路开销最小,生成树是相

2017-12-16 02:10:56 726

原创 二路归并算法

归并算法到底是什么意思 呢?听到归并就知道其实是把数组进行合并,那么我们合并的时候肯定有什么特征。 首先我们归并的目标是数组,由于是二路归并,那么我们是有2个数组需要合并,并且这2个数组是有序的。如果说我们是从小到大进行排序。那么这2个数组都是从小到大有序的。现在的问题是如果我们拿到一个无序数组是怎么样得到我们的有序数组在开始第一轮合并操作的呢。 我们是用递归把原数组进行拆分成2部分,一直拆分

2017-12-15 15:09:46 3065

原创 分治算法

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。基本思想当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,

2017-12-15 01:38:15 173

原创 希尔排序算法

希尔排序算法到达是什么呢?希尔其实一个人的名字,是这个人发明了这个算法。其实希尔排序算法还有个名字叫缩小增量排序算法。如果我们要谈希尔排序算法必须要先谈直接插入排序,因为我们的希尔排序算法就是直接插入排序算法加强版。你们可以看代码,发现就是用了直接插入排序算法。 唯一不同的是我们一开始是通过增量把数据分成不同组 首先对第一组进行插入排序 然后比如我们对增量是2的数据进行插入排序,最后还是会进

2017-12-15 01:19:22 260

原创 快速排序算法详细讲解c++版

快速排序算法1.首先我需要对快速排序算法下个定义:什么是快排呢?或者是排序的指导思想比如一个待排序的数组 int iArray[] = {5,4,45,878,45}; 我们需要把这个数组从小到大进行排序。 我们首先需要找到一个参数轴 也就是参数的数据 有了参考数据我们就把数据分成2个部分,一个数据全部是大于或者等于当前参考数据,另一部分数据都是小于或者等于当前参考数据的。下面分析快

2017-12-14 16:56:34 24122 3

原创 针对数组存储结构的堆排序算法

堆排序 Heap Sort堆排序 Heap Sort   堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义  n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。  情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆)  情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆)  其中i=1,2,…,n/2向下取整;

2017-12-13 10:39:59 2423

原创 菜鸟教程选择排序算法c++版

**选择排序详细讲解**

2017-12-13 09:04:27 798

原创 普里姆和克鲁斯卡尔最小生成树算法史上最详细菜鸟教程详解(c++版)

针对图数据结构最小生成树普里姆与克鲁斯卡尔算法详细讲解额外知识点必须知道的东西?首先什么图数据结构,什么又是树,图数据结构和树数据结构又有什么联系和区别,为什么我们的图数据结构需要换成最小生成树,这个生成树在实际中又有什么意义, 普里姆和克鲁斯卡尔算法又分别是什么,他们之间有什么区别。图数据结构:首先你必须知道数据结构是什么,所谓数据结构就是数据之间的关系,比如一个队伍,假如导游给我们这个队伍

2017-12-12 02:40:47 2597 1

原创 为什么客户端不需要绑定IP地址和端口号

**因为服务器是时时在监听有没有客户端的连接 如果服务器不绑定IP和端口的话,客户端上线的 时候怎么连到服务器呢,所以服务器要绑定IP和端口 面客户端就不需要了,客户端上线是主动向服务器发 出请求的,因为服务器已经绑定了IP和端口,所以 客户端上线的就向这个IP和端口发出请求,这时因为 客户开始发数据了(发上线请求),系统就给客户端分配 一个随机端口,这个端口和客户端的IP会随着上线请

2017-11-24 02:26:01 6506

原创 花几分钟轻松搞定快速排序算法

//快速排速算法,使用迭代 array待排序的数组, s是数组的首索引,t是最后一个元素索引void QuickSort(int[] array, int s, int t){ //定义变量保存被排序的数组索引 int i = s, j = t; //一个元素就没有必要排序了吧,所以索引s必须小于t if(s < t) {

2017-11-18 03:26:58 228

原创 直接插入排序算法详解

//直接插入排序 array待排序的数组 n数组的元素个数void InsertSort(int[] array, int n){ //我们默认第一个元素也就是索引为0的有序 //循环遍历索引1--n-1对应的数据进行排序 //依次从索引1开始到最后一个元素一一和当前索引前面的元素进行一一的比较进行排序 //定义循环需要的变量 int i = 1;

2017-11-17 23:22:55 1985 3

原创 用造小人让你彻底搞懂什么是建造者设计模式

那么到底什么建造者设计模式呢,当然设计模式其实就是代码一种组织方式。那么我们的造人代码为什么需要这种代码组织结构呢,如果不用会发生什么,用了又会怎么样。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace

2017-11-17 19:33:14 1482

原创 送礼物案例搞定代理模式的应用

什么是代理模式呢,其实代理模式是我们造一个代理者,然后和这个代理者去通信,然后这个代理者其实是持有其他对象的,从而我们就可以通过控制这个代理对象而控制了代理对象所持有的对象。//被接受礼物的类class SchoolGirl{ //字段名称 private string name; public string Name { get

2017-11-17 18:23:02 291

原创 简单工厂设计模式实现商店买牙膏收费案例过渡到结合策略模式的理由全解

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 商城促销__策略模式{ //现金收费抽象类 abstract class CashSuper {

2017-11-17 15:41:38 331

原创 简单工厂设计模式实现计算器的案例

```using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 简单工厂模式{ class Program { static void Main(string[] args)

2017-11-17 02:16:33 527

原创 几分钟搞定二叉排序树的删除节点算法漫谈无代码

我希望看到我这博客的时候是已经对应生成二叉排序树算法已经很熟悉了,删除节点的时候 也许我们会删除20那个节点,那么我们只需要把30节点的左子指针域设置null, 然后释放节点20的内存地址,如果想得到被删节点的数据可以返回, 这种节点是叶子节点,既没有孩子节点,比较简单,还有一种情况比如 40 和85节点 ,只有一个孩子节点,也比较简单,比如40,我们只要把30的右指针域保存40的孩子节点地址就可

2017-11-16 23:28:16 3173

原创 树的查找-->二叉排序树的查找算法全解

分析二叉排序树的定义:根节点25 的左右子树, 18左子树的全部节点大小是小于25的,右子树的全部节点是大于25的。 同样46作为根节点的左右子树也是满足上述性质。那么这样的二叉树就是二叉排序树。特别注意二叉排序树里面不存在2个相同的节点数据那么二叉排序树查询元素的过程是什么样的呢,其实如果你们看过我写的二分查找的博客,你们会很清楚,每次查询都是将元素查询范围减少1半,其实是比较类似的。因此我们

2017-11-16 18:58:25 1585

原创 老罗带你轻松搞定针对索引存储结构的分块查询算法

先上个图,比较清晰分析:数据表是什么呢,比如我有个数组是被查询的集合,那么这个数组就是数据表,那么什么是索引表其实就是保存了数组里面的某些元素和索引值。继续看实例:如果我们针对数据表从8 —-到87这些元素中找具体某个元素的话,由于是没有排序的,那么肯定是不能进行二分查找,如果是顺序查询数据量又太多,效率太差,因此我们想个办法,能不能让这个数组中的每段数据是无序的,但是每段数据的最都小于下段数据的每

2017-11-16 14:45:57 341

原创 彻底轻松搞定顺序存储结构元素的二分查找的时间复杂度优势以及如何算时间复杂度

二分查找也叫折半查找,根据字面意思大概知道是怎么个查找具体一个元素的吧。首先分析下查询过程: 我们先通过被查询的数组得到该被查询数组的第一个索引和最后一个索引值,假如我们拿数组10个元素来做例子我们得到索引0和索引9 mid = (min(0) + max(9))/2 mid =5 得到中间索引然后就测试当前这个索引对应的元素是不是我们想要的元素,是的话就直接返回元素的索引下标,否则我们根

2017-11-16 13:45:23 2093

原创 几分钟搞明白生成树和最小生成树的定义

注意文字意思:不管是生成树还是最小生成树一定还是输,千万别和图混淆了。下面来说生成树:我们这棵树是针对图来说的,如果你们已经知道极小连通子图就非常简单了, 极小连通子图什么意思呢,就是我们把图中的全部节点连接起来,假如n个节点那么,边是n - 1条。注意形成的一定是一棵树才是生成树。好了回到正题: 那么我们的生成树怎么在图的基础上生成的呢? 我们学了图应该知道有2种遍历方法:1深度优先

2017-11-15 07:57:53 38159 1

原创 递归解决汉罗塔问题到底多么简单

这个移动盘的问题, 分析:假如我们的目的就是Hanoi(n,x,y,z); 表示n个盘片 并且都在x处, 我们是可以借助y把n个盘片放到z上,并且不能出现大盘片在小盘片上面的情况因此我们可以分解问题,既然是n个盘片需要移动,那么我们可以先把n-1个盘片全部移动到y上,是不是就剩余1个盘片在x处,我们直接把第n个盘片搬到z上,然后在把n-1个盘片搬到z上,是不是搞定。问题就转换为我们需要把n-1

2017-11-14 13:36:04 3085

原创 利用栈数据结构彻底搞定走迷宫案例解析(并非最短路径)

先上迷宫图 迷宫数据图我们分0 1 -1 三种可能 0表示可以走白色表示 1表示障碍物 -1表示已经走过 方位规则设置: 方位也就是我们下面的di的取值为0 1 2 3 这四个方位 表示当前格子可行走的方位迷宫算法分析: 刚开始的时候我们是有迷宫起点也就是(i,j)是当前起点方块 并且还没有找到当前方块的下一个行走方位,我们根据上面的介绍我们知道方位根据顺时针开始标号为

2017-11-13 10:19:08 1158

原创 带你彻底搞定希尔排序是个什么情况

首先希尔排序是怎么来的,为什么叫希尔排序。这个算法其实是一个叫什么shell发明的。我们中文翻译过来的。所以名称由来搞定了吧。那么希尔排序有个希尔增量序列,这个是什么意思,比如我们有个数组这个增量就是数组索引间隔比如我的希尔增量是5,那么我们在排序的时候就是比如81这个数就作为手里拿的第一张牌,先不动,然后我们在这个牌的基础上+5,就找到了35这个牌,进行比较35小,就把35放到81这个位置,而我们

2017-11-12 15:58:17 2304 4

原创 利用拿扑克牌让你几分钟搞定插入排序算法

先拿一个j,然后拿到一个k放在j的后面接着拿到一个A,放入k后面,现在拿到一个Q 那么我们必须把Q插入到K中,那么我们必须拿Q和A到J之间的一一比较最终找到一个合适的位置插进去。现在上代码 //插入排序算法 需要参数为待排序数组以及数组的元素个数nvoid Insertion_Sort(ElementType A[], int n){ //代表数组的1到n-1的索引 表示我

2017-11-12 12:20:20 4215 1

原创 通俗易懂的让你彻底搞懂冒泡排序的由来

先上图:冒泡排序是属于简单排序当中的,为什么叫冒泡排序呢, 假如我们把我们的元素用泡泡去比喻,那么数据不同,泡泡就不同大小。假如我们想把数据从小到大排序,那么在排序的过程中小泡泡会慢慢往上被交换出来也叫冒上来。分析冒泡过程:既然冒泡排序就是元素不断交换的过程,那么我们图中假如有5个泡泡,那么我们假如开始第一趟冒泡比较,第一个泡和第二个泡比较大小,大的泡泡会放在下面的位置,那么...

2017-11-12 10:30:28 16422 6

原创 几分钟明白什么叫平衡二叉树

平衡二叉树先看看上图我们将同样的数据形成二叉树,但是二叉树的高度是不同的。 我们都知道二叉树的高度不同那么查找元素的平均时间是不同的。平均查找时间是怎么计算的,我们是把每个节点查找的次数加起来除全部节点数就是平均查找时间,而每个节点找到的时间就是二叉树的层 比如第一幅图 jan的查找次数是1 Feb 就是2 全部加起来除全部节点数那么我们得到这三幅图的查找效率最高的是第二幅图。 直接根据

2017-11-12 09:50:29 6007

原创 彻底搞定二叉搜索树c++版本

今天我们的主题是二叉搜索树也有叫二叉排序树还是和以前一样,我们谈某个技术之前先谈谈出现的理由:二叉搜索树那么到底是什么,做什么的,根据字面意思其实就是使用特定二叉树的特性去查找树里的某个元素。我们先来谈谈查找的概念: 查找分静态查找和动态查找静态查找:比如我们在字典里找个单词,所谓静态就去查找元素的时候,并不会去改集合,比如我查找单词,假如字典里没有想要的单词,你是不会把你这个单词插入到字典里面的。

2017-11-12 09:39:50 307

原创 几分钟搞定队数据结构在非递归层序遍历算法中的应用

研究队数据结构在层序遍历算法的应用之前:我们先需要了解几个基本知识,首先队数据结构是什么,有什么特性也就是不同点。 首先队数据结构其实也就是数据类型,只是这个数据类型里面在堆上开了一定的内存,可以保存大量的元素,其次进入的元素,当前我们想要取保存的元素不能像数组类型那样根据下标任意的取数据元素。 队数据结构只给我们提供了pop操作和Push操作,底层代码其实是在内存两端进行操作的。层级遍历又是什

2017-11-12 03:09:10 622

原创 非递归中序遍历二叉树算法详解

注意学习这个算法需要随时可以在脑海中输出二叉树的中序遍历的序列 举例:如上图,我们就看到一棵二叉树:那么我们是不是马上可以想到这棵二叉树的中序遍历序列是什么呢?我直接给出答案:D B EF A G H C I 我们如果不适用递归中序遍历二叉树即实现输出二叉树中的全部数据并且每个节点只访问一次的操作。那么在我们的算法中是通过单独开内存来保存节点数据,我们这个内存指的其实就是我们学过的栈数据结构S

2017-11-11 11:10:07 31572 3

原创 轻松让你彻底搞定c++版 线索二叉树的线索化算法

二叉树图首先我们要先谈谈线索二叉树数据结构的出现理由,为什么要出现。我们可以不用线索二叉树吗,那是肯定的。谈线索二叉树之前你必须对二叉树的链式存储结构遍历非常了解。如果不了解请先搞懂先,我们知道二叉树的节点数据类型有如下几种设计孩子双亲节点,我就谈这一种设计。孩子双亲那就说明这个节点数据保存了孩子和双亲的地址,可以立马找到当前节点的孩子和双亲,但是如果我想不用遍历就得到比如中序遍历后的当前节点的前序

2017-11-11 02:24:47 730

原创 计算机图形学之纹理的作用

说到纹理我们很难用文字描述:我先上图:大家发现了什么吗。 细细看: 我们第二幅模型是通过纹理映射技术给了模型一些真实感,纹理映射这个概念待会谈。那么大家千万不要以为第二幅图就一定使用了纹理映射不一定的。现在就谈纹理的好处: 我们有了纹理,那么我们就可以把模型的表面通过纹理给覆盖上去,这样的话我们做模型的人就不要那么辛苦的去构造模型和材质细节,节省了大量人力和时间。如果我们站在像素级别角度,我们

2017-11-10 06:15:35 6862 1

原创 几分钟搞懂c#之FileStream对象读写大文件

还是一样,我先上代码,但是为了你们测试结果和我一样,必须先有准备工作,否则会找不到目录或者文件就没有效果;既然是读取大文件,那么这个文本必须存在现在来看目标目录其实这里的文本文件可以删除,因为我们写入文本数据的时候的模式是当没有找到文件就创建新的。下面上的上代码“` using System; using System.Collections.Generic; using System.IO;

2017-11-09 05:07:06 24989 9

原创 几分钟让你彻底搞懂 c#之using和try-catch-finaly的区别和联系

还是和以前一样废话不多说我先上代码“` using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text;namespace IO目录管理 { class Program { private strin

2017-11-09 04:41:19 7585 2

原创 文件流FileStream技术出现的理由漫谈

还是废话不多说,一般我们读写文本通过File类中的几个方法是可以满足我们的需求的,如下 File.ReadAllLines("文件路径")这个方法读取文本的时候是把文本中的每一行数据读取到一个字符串当中,然后就返回一个字符串数组 File.ReadAllText("文件路径");这个方法读取文本的时候是一次性把文本中的全部数据包括换行符读入到一个字符串当中。我们就可以直接输出 Fil

2017-11-09 03:06:27 2750 3

原创 几段代码让你彻底搞懂编码出现乱码问题(File类的几个读写文本问题)

废话不多说;我先上图我的代码是用File类读取文本里面的内容,开始也是我写入的。 其实关于编码乱码问题,很多人都说你打开文本另存为UTF-8就搞定。 那么如果我来说下里面的原理;其实我们默认不写编码格式就默认为ASCII. 因此当我们打开去看的时候用的编码格式默认其实是UTF-8 你写入和读取的编码不同,肯定不行。看代码,“` using System; using System.Col

2017-11-09 02:23:42 3724

原创 彻底搞懂C#之Yield Return语法的作用和好处

还是和以前一样,我先上代码,请大家先拿到我的代码或者你跟着敲,运行看效果,以及理解每行带代码的作用。 我们要带着为什么要用Yield这个关键字,不用可以吗这个目的去学知识,我相信会更加的有意思。首先我贴出平时正常输出偶数集合的办法/* * * 学习Yield Return 语法 * 使用两个方法,显示1 - 100之间的全部偶数 * * */using System;usin

2017-11-09 00:11:27 41313 11

空空如也

空空如也

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

TA关注的人

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