十大经典排序算法

特别声明:原文来自公众号:帅地玩编程,原文链接https://mp.weixin.qq.com/s/AGPCfFg7bEiCsa5zNeCi4A

术语铺垫
有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:
1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。
2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。
3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。
4、非原地排序:需要利用额外的数组来辅助排序。
5、时间复杂度:一个算法执行所消耗的时间。
6、空间复杂度:运行完一个算法所需的内存大小。

十大排序讲解顺序
  • 选择排序
  • 插入排序
  • 冒泡排序
    • 非优化版本
    • 优化版本
  • 希尔排序
  • 归并排序
    • 递归式归并排序
    • 非递归式归并排序
  • 快速排序
  • 堆排序
  • 基数排序
    • 非优化版本
    • 优化版本
  • 桶排序
  • 基数排序

1、选择排序

过程简单描述:
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法我们称之为选择排序。

选择排序

核心:选择排序的关键点在于:每次筛选出剩余数组中的最小数,将它与剩余数组的第一个进行位置交换

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。