从今天开始,给自己立下一个目标,每天晚上写一篇算法与数据结构的博客,用来给自己以后的算法工程师的目标铺路!
今天晚上就以算法里面的排序,作为自己的第一章节吧.
排序,就是讲一组数据,按照特定的规则去调换位置,使得数据具有某种顺序管理(递增或者递减).
在排序过程中,数据的移动方式分为"直接移动"和"逻辑移动"
直接移动是直接交换数据的位置,而逻辑移动则是仅仅改变数据的指针的值,而不移动数据的位置
数据排序后的几点好处: 数据比较容易阅读 数据比较容易统计和整理 可大幅度减少数据搜索的时间
常见的排序分类
冒泡排序,选择排序,插入排序,合并排序,快速排序,堆积排序,希尔排序,基数排序
排序名称 | 排序特性 |
冒泡排序 | 稳定,空间复杂度最佳 |
选择排序 | 不稳定,空间复杂度最佳 |
插入排序 | 稳定,空间复杂度最佳 |
希尔排序 | 稳定排序,空间复杂度最佳 |
快速排序 | 不稳定,空间复杂度最差O(n),最好为O(log2n) |
堆积排序 | 不稳定.空间复杂度最佳 |
基数排序 | 稳定,空间复杂度为O(np)n为原始数据的个数,p为基底 |