摘要: 插入排序 插入排序:插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。如果碰见一个和插入 阅读全文
posted @ 2021-02-26 13:51 角色人生 阅读(457) 评论(0) 推荐(0)
摘要: 选择排序 选择排序是一种简单直观的排序算法。它与冒泡排序很相似,都是比较 n-1 轮,每轮都是比较 n–1–i 次,每轮找出一个最大值或最小值。 只不过,冒泡排序是将每轮找出的最值放到最右边,而选择排序是将每轮找出的最值放到最左边。并且在算法上,冒泡排序是将相邻的数进行逐个比较,以从小到大排序为例, 阅读全文
posted @ 2021-02-26 13:50 角色人生 阅读(589) 评论(0) 推荐(0)
摘要: 冒泡排序 冒泡排序:冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并 阅读全文
posted @ 2021-02-26 13:45 角色人生 阅读(476) 评论(0) 推荐(0)
摘要: 各种排序算法什么时候有最好情况、最坏情况(尤其是快排) 直接插入排序:最坏情况需要比较O(n^2)次(n(n - 1)/2次)(有争议)。 简单选择排序:无论是否最坏都需要O(n^2)次(n(n - 1)/2次)。 冒泡排序:需要比较O(n^2)次(n(n - 1)/2次),即序列逆序的情况。 堆排 阅读全文
posted @ 2021-02-26 13:41 角色人生 阅读(2257) 评论(0) 推荐(0)
摘要: 各种排序算法的时间空间复杂度、稳定性 一、排序算法分类: 二、排序算法比较: 注: 1、归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高。 2、 基数排序时间复杂度为O(N*M),其中N为数据个数,M为数据位数。 三、 辅助记忆 1、时间复杂度记忆 冒泡、选择、直接 排序需要两 阅读全文
posted @ 2021-02-26 13:40 角色人生 阅读(617) 评论(0) 推荐(0)
摘要: 自2021-02-25日起,本人的博客将如数全部搬至CSDN。 阅读全文
posted @ 2021-02-25 11:43 角色人生 阅读(281) 评论(0) 推荐(0)
摘要: 为什么建立连接是三次握手,关闭连接确是四次挥手呢? 建立连接的时候,服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所 阅读全文
posted @ 2021-02-25 09:48 角色人生 阅读(481) 评论(0) 推荐(0)
摘要: 为什么客户端最后还要等待2MSL? MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。 第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没 阅读全文
posted @ 2021-02-25 09:47 角色人生 阅读(528) 评论(0) 推荐(0)
摘要: 什么是四次挥手 在网络数据传输中,传输层协议断开连接的过程我们称为四次挥手; 第一次,Client将FIN置为1,发送一个序列号seq给Server;进入FIN_WAIT_1状态; 第二次,Server收到FIN之后,发送一个ACK=1,acknowledge number=收到的序列号+1;进入C 阅读全文
posted @ 2021-02-25 09:45 角色人生 阅读(474) 评论(0) 推荐(0)
摘要: 为什么服务端易受到SYN攻击? 服务端的资源分配是在二次握手时分配的,而客户端的资源是在三次握手时分配的。 SYN攻击,即客户端在短时间内伪造大量不存在的IP地址,并向SERVER端不断的发送SYN包,SERVER收到请求即回复确认,并等待客户端的确认,由于源地址不存在,因此SERVER需要不断的重 阅读全文
posted @ 2021-02-25 09:43 角色人生 阅读(532) 评论(0) 推荐(0)