之前在学习数据结构的时候就有接触排序以及排序算法,这次考研专业课也有这方面的东西,用到的时候发现学习的并不扎实,所以回过头来好好的做一番总结,欠的债终究还是要还的,加油吧。
说明:
排序(Sorting)是数据处理中一种很重要也很常用的算法。
排序操作在处理过程中要花费一定的时间,人们为了提高效率进而节约时间提出并且不断的改进优化各种排序算法。
关于稳定性:
N个记录的序列为 {R1,R2,...,Rn},其相应的键值序列为{K1,K2,...,Kn},假设 Ki=Kj ,若在排序前的序列中Ri 在 Rj 之前,即 i<j ,经过排序后,Ri 仍在Rj 之前,则称所用的排序方法是稳定的;反之,则称所用的排序方法是不稳定的。
排序两大类:
(1)内部排序(Internal Sorting);待排序的记录全部存放在计算机内存中进行的排序过程;
(2)外部排序(External Sorting);待排序的记录数量很大,内存不能存储全部记录,需要对外存进行访问的排序过程。
关于优劣:
评价一个排序算法的优劣,通常用时间复杂度和空间复杂度两个指标,这里咱们主要说一下时间复杂度;
在排序过程中主要有比较两个键值大小和将记录从一个位置移动到另一个位置这两种基本操作。因此,从键值的比较次数和记录的移动次数两个方面来分析时间复杂度。
最好的排序算法:
由于排序算法的多样性,很难确定一种公认的最好方法。
各种排序算法都有自己适应的不同情况,在实际应用中应该选择适当的方法,合适的就是最好的。
基础篇就先总结到这里,下一篇咱们一起学习一下插入排序,从基础走向实践,了解排序+算法的可爱之处。