我们用任何编程语言写出的程序,其实就是算法加数据结构,也就是数据、运算加结构,而数据结构的操作,包含数据元素的查找、插入、删除、遍历、排序,排序是数据处理中经常使用的一种重要的运算,它在我们的程序开发中承担着非常重要的角色,排序算法是《数据结构与算法》中最基本的算法之一,是学习任何语言的基础操作,包含了遍历,比较,赋值,函数,最优等等技巧,一维数组的排序是新手最基本最全面的能力测试,学习任何语言都离不开学习排序,易语言里虽然封装了数组排序,但我们深入的了解几大经典排序,对我们算法逻辑有很大的帮助,为我们后续解决各种问题打下坚实的基础!所以511遇见将会推出易语言版的经典排序视频教程系列。
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等,我们这里学习的都是内部排序。
程序=算法+数据结构
算法=逻辑+控制
教程大体计划录制
冒泡排序
选择排序
插入排序(直接插入排序、二分法插入排序)
希尔排序
归并排序
快速排序
堆排序
计数排序
桶排序
基数排序
地精排序
梳子排序
鸡尾酒排序
排序方法分类
常见的排序可以分为两大类,比如十大经典排序:
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
排序相关概念
一个算法执行时间是衡量算法好坏的重要参数。排序算法的时间开销可用算法中的数据交换次数,和数据移动次数来衡量。
基于教程的难度,我们在录制视频时,时间和空间的复杂度就不再具体分析。
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。