这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
前文
数据结构与算法是非常重要的一门学科,最开始我还不懂,直到后面深入的学习我才愈发发现这门学科的重要性。我们实现一个程序首先是存储需求,然后是操作需求。一个好的存储结构能让我们的算法实现更加便捷。更加快速有效的解决问题。这也是为什么我们需要学习数据结构与算法这一门课的原因
正文
本节课主要讲了下排序算法,从几个方面来进行考虑,讲了下什么是最快的排序方法
首先介绍四种经典排序算法:插入排序 快速排序 堆排序 Benchmark(也方便个人能够复习一下排序算法)
插入排序
什么是插入排序?
就像打扑克牌一样,一直抓牌,把后面的牌,插入到有序的牌中,即不断交换,直到找到第一个比其小的数 每步将一个待排序的对象,按照大小,插入到前面已经排好序的一组对象的适当位置,直到对象全部插入为止
直接插入排序-采用顺序查找法查找位置
1.复制插入元素
2.记录后移,查找插入位置
直接插入排序,使用哨兵
从课程的学习中我们可以看见优缺点 最好时间复杂度则是O(n) 最坏和最差都是O(n²)
快速排序
分治思想,几把区间分为两块 从而进行排序
选定一个轴点(pivot)
用pivot分成两个区间,小的放左边,大的放右边,然后一直进行下去,直到有序为止
上图即为快速排序时间复杂度的优缺点
快速排序一般来说是不稳定的
堆排序
利用堆的性质 ,一步一步的排序,从而完成排序
Benchmark
是根据实际场景来进行排序的。
最后
总而言之,实际工作中,我们会根据处理数据的大小,样式来选择最优的排序方法。当然我现在学的知识还很浅薄。可能无法理解以及实现相关理论,所以需要一直学下去。也会多去看看大佬们的文章,以后我会更加努力的,谢谢大家!
(人之所以能,是相信能!)