数据结构与算法|青训营笔记

97 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记

前文

数据结构与算法是非常重要的一门学科,最开始我还不懂,直到后面深入的学习我才愈发发现这门学科的重要性。我们实现一个程序首先是存储需求,然后是操作需求。一个好的存储结构能让我们的算法实现更加便捷。更加快速有效的解决问题。这也是为什么我们需要学习数据结构与算法这一门课的原因

正文

本节课主要讲了下排序算法,从几个方面来进行考虑,讲了下什么是最快的排序方法

首先介绍四种经典排序算法:插入排序 快速排序 堆排序 Benchmark(也方便个人能够复习一下排序算法)

插入排序

什么是插入排序?

就像打扑克牌一样,一直抓牌,把后面的牌,插入到有序的牌中,即不断交换,直到找到第一个比其小的数 每步将一个待排序的对象,按照大小,插入到前面已经排好序的一组对象的适当位置,直到对象全部插入为止

直接插入排序-采用顺序查找法查找位置

1.复制插入元素

2.记录后移,查找插入位置

直接插入排序,使用哨兵

image.png

从课程的学习中我们可以看见优缺点 最好时间复杂度则是O(n) 最坏和最差都是O(n²)

快速排序

分治思想,几把区间分为两块 从而进行排序

选定一个轴点(pivot)

用pivot分成两个区间,小的放左边,大的放右边,然后一直进行下去,直到有序为止

image.png

上图即为快速排序时间复杂度的优缺点

快速排序一般来说是不稳定的

堆排序

利用堆的性质 ,一步一步的排序,从而完成排序

image.png

Benchmark

是根据实际场景来进行排序的。

image.png

最后

总而言之,实际工作中,我们会根据处理数据的大小,样式来选择最优的排序方法。当然我现在学的知识还很浅薄。可能无法理解以及实现相关理论,所以需要一直学下去。也会多去看看大佬们的文章,以后我会更加努力的,谢谢大家!


(人之所以能,是相信能!)