
面试必背必备
发布日期:2021-05-08 05:28:00
浏览次数:22
分类:精选文章
本文共 1534 字,大约阅读时间需要 5 分钟。
数据结构与算法
常见排序算法及最坏时间复杂度
《忆排序》中提到的选择、冒泡、插入等算法,作为数据处理的核心功臣,常出现在面试中。以下是几种算法的特点及性能指标:
选择排序
优点:时间复杂度稳定,平均时间复杂度为O(n²)。 缺点:最坏情况下(已排序数组)时间复杂度为O(n²)。 特点:通过多次对比操作完成排序。冒泡排序
优点:简单实现,时间复杂度为O(n²)。 缺点:同样面临最坏情况下的O(n²)时间复杂度。 特点:通过相邻元素的交换完成排序。插入排序
优点:时间复杂度表现更优,平均时间复杂度为O(n log n)。 缺点:最坏情况下时间复杂度为O(n²)。 特点:通过将元素逐一插入已排序数组完成排序。快速排序
优点:平均时间复杂度为O(n log n),最优情况下(已排序数组)时间复杂度为O(n log n)。 缺点:最坏情况下(所有元素逆序)时间复杂度为O(n²)。 特点:通过递归地将数组划分为两部分,直到子数组长度为1为止。堆排序
优点:时间复杂度稳定,平均时间复杂度为O(n log n)。 缺点:没有最优情况,时间复杂度为O(n log n)。 特点:通过构建堆结构完成排序。希尔排序
优点:时间复杂度介于选择排序与插入排序之间,平均时间复杂度为O(n log n)。 缺点:最坏情况下时间复杂度为O(n²)。 特点:通过分组和比较的方式逐步优化数组。基数排序
优点:时间复杂度为O(k n log n),其中k为基数。 缺点:基数选择不当会导致时间复杂度增加。 特点:通过基数的逐步排序完成整体排序。桶排序
优点:时间复杂度为O(n + k),其中k为桶的数量。 缺点:桶的数量选择不当会影响性能。 特点:将数组元素按特定区间分配到桶中,通过桶内排序完成整体排序。计数排序
优点:时间复杂度为O(k + n)。 缺点:需要较大的基数值。 特点:通过计数器记录元素频率,逐一读取元素完成排序。快归堆排序
优点:平均时间复杂度为O(n log n),最优情况下时间复杂度为O(n log n)。 缺点:最坏情况下时间复杂度为O(n²)。 特点:结合快速排序和归并排序的优点,适用于大部分数据。希尔桶排序
优点:时间复杂度为O(n log n)。 缺点:最坏情况下时间复杂度为O(n²)。 特点:采用希尔法则对数组进行分组,逐步优化数组。基数基数排序
优点:时间复杂度为O(k n log n)。 缺点:基数选择不当会影响性能。 特点:通过多次基数排序完成整体排序。稳定性分析
不同排序算法的稳定性直接影响到应用场景的选择。- 不稳定性:如选择排序、希尔排序、快归堆排序等。
- 稳定性:如归并排序、计数排序、基数排序等。
TCP的三次握手
在数据传输过程中,三次握手是建立可靠通信的基础。以下是详细解析:
握手过程
第一次握手
- 客户端发送SYN包(seq=x),并进入SYN_SEND状态。
- 服务器确认接收到SYN包后,发送SYN-ACK包(seq=y),并进入SYN_RECV状态。
第二次握手
- 服务器发送的SYN-ACK包确认客户端的SYN请求。
- 客户端接收到SYN-ACK包后,发送ACK包(ack=y+1),并进入ESTABLISHED状态。
第三次握手
- 客户端发送ACK包完成握手过程。
- 双方进入ESTABLISHED状态,完成三次握手。
为什么需要三次握手
三次握手的核心目标是确保通信双方的发射和接收能力正常。具体来说:
- 第一次握手:仅确认对方发送能力正常。
- 第二次握手:双方互相确认对方的发送与接收能力正常。
- 第三次握手:确认对方的接收能力正常。
通过三次握手,双方能够确保通信链路的可靠性,是数据传输的前提条件。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月21日 09时53分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《小王子》里一些后知后觉的道理
2019-03-06
《你当像鸟飞往你的山》总结
2019-03-06
《我是猫》总结
2019-03-06
《抗糖化书》总结
2019-03-06
apache虚拟主机配置
2019-03-06
PHP官方网站及PHP手册
2019-03-06
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
ReactJs入门教程-精华版
2019-03-06
Python 之网络式编程
2019-03-06
MySql5.5安装步骤及MySql_Front视图配置
2019-03-06
Java内存模型(JMM)
2019-03-06
AQS相关
2019-03-06
WCF学习之旅—第三个示例之一(二十七)
2019-03-06
java ThreadPoolExecutor初探
2019-03-06
快速指数算法
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06