自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redAnt的博客

有梦想,爱学习,实力派

  • 博客(29)
  • 资源 (2)
  • 收藏
  • 关注

原创 挑战408——数据结构部分目录

前言挑战408——数据结构(1)——个人的一些学习方法算法基础概念挑战408——数据结构(2)——选择排序算法挑战408——数据结构(3)——Big-O表示法挑战408——数据结构(4)——Big-O表示法(2)挑战408——数据结构(5)——合并算法挑战408——数据结构(6)——标准复杂类挑战408——数据结构(7)——快速排序算法挑战408——数据结构(8)——快速排序算法...

2019-10-31 22:30:36 922

原创 挑战408——数据结构(15)——线性结构(6)

线性结构的基本介绍到了这里就暂时告一段落。这篇文章主要是用来总结线性结构的一些特点跟应用的。线性结构是数据结构中的最基础的结构,以下的数据结构都是基于这个结构的。尤其是链表,树跟图的结构都可以由此衍生出来。链表的遍历模式通过之前的学习,我们知道我们当时写moveCursorBackward时,是通过遍历链表来找到cursor之前的一个...

2019-10-31 22:19:12 310

原创 挑战408——数据结构(14)——线性结构(5)

前篇讨论了一下具体的链表结构以及常规操作。现在我们趁热打铁,感觉再来熟悉一下具体的操作。此时我们用链表的形式来实现之前的顺序栈。链栈栈结构这里不多说,我们直接进入正题。先考虑,当栈为空的时候,如何表示?当然就是一个空指针了将新元素推入堆栈时,该元素只会添加到链表的前端。因此,如果将元素e1 push到空栈上,该元素将存储在一个新单元格中,该单元格将成为链中唯一的链接:将一个新元素pus...

2019-10-31 10:58:52 312

原创 挑战408——数据结构(13)——线性结构(4)

通过上篇的学习,我们可以知道作为为编辑器buffer,他们可以快速的找到编辑器的第一位和最后一位,但是插入和删除某个元素的时候,却是可能很慢。因此为了改进这个问题,我们有必要了解为什么以前的方法会使得插入和删除变得这么慢(因为通常使用编辑器的时候,插入和删除的操作往往更频繁)。在数组实现的情况下,答案是显而易见的:因为当我们在buffer中插入一些新文本时,必须移动大量字符。例如,假设你尝试补全...

2019-10-30 16:06:56 351

原创 挑战408——数据结构(12)——线性结构(3)

前两篇文章介绍了基于数组的栈跟队列的实现。数组是一种顺序表的结构,所谓顺序表,就是线性表的顺序存储,它用一组地址连续的存储单元,一次存储线性表中的数据,使得逻辑上相邻的两个元素在物理上也相邻。主要特点是表中元素的逻辑顺序跟物理顺序相同。由于物理顺序相同,通过首地址跟元素序号就可以直接在O(1)的时间内找到元素,这种访问方式称为随机访问方式。但是这种存储方式,在插入和删除元素方面又显得复杂很多了,因...

2019-10-28 23:06:47 312

原创 挑战408——数据结构(11)——线性结构(2)

我们提到过一个叫栈(stack)的数据结构,它是一种符合最后一个进栈的元素一定会是第一个出栈的元素(LIFO),这种机制在计算机编程中是非常有用的,因为它反映了我们编程中函数调用的机制。然而在现实生活中却显得限制太多而且无用。队列的概念在人类社会中,我们的公平的集体概念赋予了先发制人的优先权,如“先到先得”所表达的那样。在编程中,这种策略的通常称为是“先到先得” ,缩写为FIFO。使用FIF...

2019-10-27 21:17:22 322

原创 挑战408——数据结构(10)——线性结构(1)

结合

2019-10-27 16:15:10 818

原创 挑战408——数据结构(9)——插入排序算法

还有几种排序算法,也表现出跟选择排序算法一样的算法复杂度O(N^2)。我们现在分析其中的一种,称为插入排序算法。插入排序算法插入排序的操作很简单,跟选择排序一样,它需要遍历所有的元素。但是与选择排序不同,选择排序是找到最小的数,然后与剩下的第一个数交换位置。而插入排序则是遍历所有元素,然后将剩余的元素逐个按顺序插入到已经排好序的vector中。再次考虑我们之前排序示例中使用的数据,下面图解插...

2019-10-26 14:31:32 468

原创 挑战408——数据结构(8)——快速排序算法性能分析

先先看看排序算法的C++代码实现:#include <iostream>#include <vector>using namespace std;/*函数原型*/void sort(std::vector<int> &vec);void quickSort(std::vector<int> & vec, int start...

2019-10-24 21:34:44 761

原创 挑战408——数据结构(7)——快速排序算法

本章前面介绍的合并排序算法在理论上表现良好,也具有O(N log N)的最差情况复杂度,实际上并没有太多的应用。 相反,目前使用的大多数排序程序都是基于由英国计算机科学家C.A.R.(Tony)Hoare开发的称为Quicksort的算法.。快速排序原理Quicksort和合并排序都采用分治法。在合并排序算法中,原始vector被分为两部分,每一个被独立排序。 然后将所得到的排序向量合并在一起...

2019-10-24 11:46:22 862

原创 挑战408——数据结构(6)——标准复杂类

合并算法的算法复杂度上一篇,我们可以通过分治法实现了排序功能,现在我们来分析一下它的算法复杂度。按照以前的分析方式,调用合并排序算法来对一组含N个数的vector进行排序的时候,运行时间可以分为下面两个部分:执行非递归调用所需要的的时间。执行递归调用所需要的的时间。我们先看非递归调用的时间,在递归调用sort函数之前,我们需要对N个vector中的数据进行分解,然后将分解的数据填充到两...

2019-10-24 10:14:30 434

原创 挑战408——数据结构(5)——合并算法

从之前的学习可以看到,对大型vectory要求的排序,选择排序算法显然不符合要求,因为运行时间与输入问题规模大小的平方成比例增加,对于以线性顺序处理向量的元素的大多数排序算法也是如此。 所以要采用不同的方法来开发更好的排序算法。我们可以试着反过来思考。强大的分治法(divide-and-conquer)分治法的具体详见C++抽象编程——递归简介(1)——递归范式我们先来看看排序算法的性能为...

2019-10-23 22:57:35 1075 1

原创 挑战408——数据结构(4)——Big-O表示法(2)

最坏情况与平均复杂度上篇讨论的都是算法的运行时间直接取决于问题规模的大小N,但是在某些情况下,算法的运行时间不仅取决于问题的大小,还取决于代码的特定特性,看下面一段代码:int linearSearch(int key, Vector<int> & vec) { int n = vec.size(); for (int i = 0; i < n; i+...

2019-10-23 20:33:16 1241

原创 挑战408——数据结构(3)——Big-O表示法

对比上篇的文章,通常对于数值型的操作,通常可以用数值的本身来反映问题的规模。对于大多数的关于数组或者vector的算法,通常参与运算的数的多少本身就代表了问题的规模。在评估算法效率过程中,我们通常用字母N来表示问题规模的大小,当N逐渐增大时,N与算法性能之间的关系称为算法复杂度(The relationship between N and the performance of an algorit...

2019-10-23 00:09:13 1753

原创 挑战408——数据结构(2)——选择排序算法

151

2019-10-22 11:54:17 1803

原创 挑战408——数据结构(1)——个人的一些学习方法

在开篇之前,先说说这个计算机考研的核心课程。数据结构这一门课程,是公认的最难也是最重要的课程。难是难在目前国内的教程对这些结构介绍的过于抽象,没有实际的运行示例。直接上数据结构思想,这让一般的同学是不好接受的,有种听着就懂,一看就懵的感觉。索性本人在学习数据结构的过程中,比较幸运的以一份国外的教材和PPT进行学习,此篇总结的难度可能比考研的略简单,但是重在思想方法的介绍。这篇总结是基于之前《数据结...

2019-10-21 21:59:21 2488

原创 挑战408——一周网络——网络层(2)

划分子网分类的IP地址也称为两级IP地址(网络号,主机号)。这样的分类有几点不好的地方:IP地址空间利用率低。试想A类地址能表示(2^31)个网络地址,全球的主机数远不止如此。每个物理网络都分配一个网络号,会使得路由表过大。二级地址不够灵活。划分子网就是为了解决这些问题的。具体的思路如下:一个拥有许多物理网络的单位,可以将所属的物理网络划分成子网,这样的子网只对单位内可见,对外仍...

2019-10-21 11:33:01 337

原创 挑战408——一周网络——网络层(1)

IP网网络层应该向运输层提供什么样的服务?互联网采用的思路是这样的:网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报(这里的数据报就是IP分组)服务。网络层不提供服务质量的承诺,也就是说,所传送的分组可能出错,可能丢失也可能重复或者失序。网际协议IP是是TCP/IP协议中最重要的两个协议之一,与IP协议配套的还有三个协议:地址解析协议(ARP协议)网际控制报文协议(ICMP协...

2019-10-20 20:52:41 401

原创 挑战408——组成原理(2)——二进制数和十六进制数

这算是数据的表示运算这一部分的第一篇文章了,这部分多且繁杂,因为我们通常都是以10进制的数进行计算和表示的,用了10几年,突然接受一种新的表示方式难免会导致理解困难。初学这章我也是半懵逼状态的,好在复习了一轮后,又去多次问了老师相应的问题,才算有个大致的了解。所以这系列的文章如果有不对的地方,欢迎批评指正。这篇是基础篇,是学习后面的各种运算的基础,所以得好好看,好好理解。从10进制-&gt;2......

2019-10-18 11:42:13 770

原创 挑战408—— 操作系统(2)——用户态与内核态

操作系统内核操作系统的内核是指在计算机硬件上扩充的第一层软件。通常是一些与硬件紧密相关的模块。内核的实现是通过原语实现的,而原语又是由原子操作构成的。原语是由若干指令构成的,用于完成一定功能的过程。而原子操作是指在这过程中的行为 ,要么全做,要么不做,不可中断(以保证操作的完整性)。操作系统主要包含以下功能:时钟管理(以后会讲)中断处理(下篇会讲)原语操作(刚刚提到的)核心态与用...

2019-10-18 10:42:21 1070 2

原创 挑战408——操作系统(1)——介绍一下操作系统这个东西

在开篇我们提到过,操作系统的工作就相当于管理者的工作。操作系统是一种系统软件,它的任务是控制和管理计算机系统中的资源(包括硬件和软件资源)。控制是说系统要合理的组织和调度计算机的工作和资源的分配并且提供给用户和其他软件方便的接口环境。操作系统不是单一的程序,它是一个程序集合。操作系统的特征操作系统是一种系统软件,主要的特点有并发性,共享性,虚拟性,不确定性。 - 并发性。并发性是指两个或者两个...

2019-10-18 10:36:00 993

原创 挑战408——组成原理(1)——看看我们要学什么

计算机的发展历程我一直觉得,要想深入理解,学习一门课程,就必须了解一下它的发展史,尤其是计算机发展对比其他的专业来说可以说是相当的晚了。才100多年历史。所以有机会我一定要好好看看这100年计算机都发生了什么。 言归正传。世界上第一台计算机是1946年在美国诞生的ENIAC。1945年,冯诺依曼提出了存储程序的思想:必须将事先编好的原始程序和数据一同送入主存后,才能执行程序,一旦程序被执行,计算......

2019-10-18 08:50:03 972

原创 挑战408——一周网络——运输层(4)

TCP的可靠传输(数据传输)TCP的流量控制如果发送方发送的数据速率过快,那么接收方就很可能来不及接收那么多的数据报。所谓流量控制,就是让发送方不要发送那么快,至少要让接收方来的即接收。利用滑动窗口机制可以很方便的实现对TCP流量的控制。这里注意,rwnd的值不等于缓存区的大小。分析一下,假设B的初始接收窗口为rwnd= 400,也就是 一开始允许A最多发400字节的数据。第一第二条表示...

2019-10-17 00:15:04 424

原创 挑战408——一周网络——运输层(3)

TCP协议TCP协议的主要特点对比UDP协议,TCP协议就要复杂很多了。对比UDP协议,TCP协议有以下几点不同:TCP是面向连接的传输层协议。也就是说,使用TCP协议的通信双方事先就要建立连接,在整个连接过程当中控制个管理连接,并在通信之后释放整个连接。TCP连接只能是一对一的。也就是每一条TCP连接只能是两个端点。TCP提供的是可靠交付服务。也就是通过TCP连接传输的数据,无差错,...

2019-10-16 21:53:09 345

原创 挑战408——一周网咯——运输层(2)

TCP协议TCP协议的主要特点对比UDP协议,TCP协议就要复杂很多了。对比UDP协议,TCP协议有以下几点不同:TCP是面向连接的传输层协议。也就是说,使用TCP协议的通信双方事先就要建立连接,在整个连接过程当中控制个管理连接,并在通信之后释放整个连接。TCP连接只能是一对一的。也就是每一条TCP连接只能是两个端点。TCP提供的是可靠交付服务。也就是通过TCP连接传输的数据,无差错,...

2019-10-15 23:27:07 232

原创 挑战408——一周网络——运输层(1)

进程间的通信运输层是面向通信的最高层,也是用户功能中的最底层,运输层为它上面的应用层提供通信服务。从IP层来说,通信的两端是两台主机,IP数据报的首部明确指出了这两台主机的IP地址。但是从运输层来看,真正通信的实体是在主机中运行的进程,是这台主机的进程跟另外一台主机的进程在交换数据。也就是说IP协议只是将数据报送到目的主机,这个数据报还停留在主机的网络层,并没有交付到网络的应用层。而运输层正是为...

2019-10-15 16:39:55 436

原创 挑战408——一周网络——应用层(2)

E-Mail 电子邮件实时通信与异步通信实时通信方式是指通信双方都必须在场的通信方式(如打电话,微信的语音通信)。异步通信方式是指通信双方不需要同时到场。电子邮件就是一种异步通信方式。它先把邮件发送给收件人使用的邮箱服务器,并放在其中的收件人的邮箱中,收件人可以随时上网到自己使用的邮箱服务器进行读取。一个电子邮件系统应该具有以下三种重要组件:用户代理,邮件服务器,以及相关的电子邮件协议。用...

2019-10-14 22:42:17 431

原创 挑战408——一周网络——应用层(1)

网络应用模型C/S模式C/S模式,即所谓的客户端/服务器模式。服务器是一个总是打开着的主机,它服务于许多来自其他称为客户机的主机请求。C/S的工作模式非常简单。服务器处于打开状态。客户机放出服务请求,并等待接收结果服务器接收到请求后处进行处理,然后返回结果给客户机。对此,客户机一定要知道服务器的地址,而服务器不一定需要知道客户机的地址。打个比方,我们去银行(类比服务器)办理业务。首...

2019-10-13 19:42:40 446

原创 挑战408——一周网络——计算机网络简介

计算机网络体系计算机网络一些基本名词协议: 协议,故名思意就是规则的集合,网络的通信是双方的,要想在网络上有条不紊的进行信息交流,就必须遵循一些事先约定好的规则。这些规则和约定,称之为网络协议,简称协议。协议只在同一层中存在。接口:接口,是相邻两层之间交换信息的连接点。每一层只能为相邻的层次之间定义接口,不能跨层次定义。(比如物理层与应用层之间就不能定义)。相邻两层直接通过**服务访问点(...

2019-10-02 16:33:38 697

Prog-in-Cpp,完整版

这是斯坦福大学的C++教材,里面包含了C++的入门语法还有C++版本的数据结构。里面的内容很经典,属于经典的教材。让你知其然又知其所以然。强烈推荐

2017-09-04

Programming Abstractions in C++

Programming Abstractions in C++ Stanford大学的c++教材,感觉不错

2017-01-22

空空如也

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

TA关注的人

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