排序算法实践 | 青训营笔记
为什么要学习数据结构与算法
数据结构和算法是计算机科学中非常重要的两个概念。数据结构是我们在程序设计中用来存储和组织数据的工具。比如,我们可以使用数组来存储一组数字,使用链表来存储一组节点等等。每种数据结构都有其独特的特点和适用场景,我们需要根据具体问题的需求选择最合适的数据结构。算法则是处理数据的方法。它可以用来解决各种计算问题,例如排序、查找、图算法等等。算法的效率往往直接影响到程序的性能。数据结构和算法几乎存在于程序开发中的所有地方。
学习数据结构和算法可以帮助我们更好地解决各类生产上的问题,如性能问题等。
经典排序算法
插入排序
插入排序的算法描述是一种简单直观的排序算法。它通过将未排序的元素逐一地插入已排序的部分中来排序一组数据。具体来说,它的过程如下:
- 1、选取一个未排序的元素,将其插入已排序的部分中,位置可以是已排序部分的任何位置。
- 2、重复上述步骤,直到所有元素都被插入已排序的部分中。
- 3、对已排序的部分进行重复排序,直到所有元素都有序。
快速排序
快速排序是一种常用的基于比较的排序算法,它采用分治的思想,将一个大问题分成多个小问题来解决。实现流程是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。快速排序是时间复杂度为 O(nlogn) 的排序算法之一。
堆排序
堆排 是一种基于堆的排序算法,堆一般指的是二叉堆,顾名思义,二叉堆是完全二叉树或者近似完全二叉树。堆排序的主要思想是将待排序的数据构建成一个堆,然后依次取出堆顶元素,放到已排序的堆中,直到所有元素都排好序为止。在每次取出堆顶元素的过程中,我们可以将堆的大小减一,当堆的大小为 0 时,排序结束。
个人思考
数据结构与算法是科班四件套中非常重要的一门,在大二的时候学校就专门开设了课程。当时的我还懵懵懂懂,不知道为什么要学,直到开始学习一些中间件的底层原理的时候,才真正意识到数据结构与算法的重要性,数据结构与算法是现代软件的支撑,一定要多花时间学习数据结构与算法。