排序算法说明
(1)排序的定义:对一序列对象根据某个关键字进行排序;
输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1'<=a2'<=a3'<=...<=an'。
(2)对于评述算法优劣术语的说明
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
内排序:所有排序操作都在内存中完成;
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
时间复杂度: 一个算法执行所耗费的时间。
空间复杂度: 运行完一个程序所需内存的大小。
(3)排序算法图片总结(图片来源于网络):
排序对比:
![c26641bcec252a7f4796fc8822ef83cb.png](https://i-blog.csdnimg.cn/blog_migrate/8e93b7c39f52fe14eaae69edfd2f6f98.jpeg)
图片名词解释: n: 数据规模 k:“桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外内存
排序分类:
![270a3084697179cdf1c982b66cdc4437.png](https://i-blog.csdnimg.cn/blog_migrate/832042208df23d3037fb827d3ba35727.jpeg)
冒泡排序动图演示:
![6ad18a6a75d8f5cbcdc289703433f112.gif](https://i-blog.csdnimg.cn/blog_migrate/a96808962ad0d8a728a234240ca42308.gif)
选择排序动图演示:
![f4cf8f031b3e2b65533a8599dc436126.gif](https://i-blog.csdnimg.cn/blog_migrate/656bf2e08d9df84b4550390cfb8868e4.gif)
插入排序动图演示:
![c37a98c1cd60b9fbc0972761c6360c12.gif](https://i-blog.csdnimg.cn/blog_migrate/a5008614c3c92c10b405173515e80577.gif)
归并排序动图演示:
![188a425b8129d771331a00fec9b23c58.gif](https://i-blog.csdnimg.cn/blog_migrate/1382a9b52a4affb9ab499698cb9c41f4.gif)
快速排序动图演示:
![8a3cba379ddb1ee039503ce4a637335c.gif](https://i-blog.csdnimg.cn/blog_migrate/d6af29fa7fe7c9e468d60396c4c98327.gif)
堆排序动图演示:
![c9db6a71159f97a1d8f20edbea1122cf.gif](https://i-blog.csdnimg.cn/blog_migrate/386a4a6716f24390090341c0da141c9a.gif)
基数排序动图演示:
![3b9ad6761d4ab35ef38d76aeca36b7d2.gif](https://i-blog.csdnimg.cn/blog_migrate/8b453847526c61f8f4b6112430de04d0.gif)