平山教育
大家一起学习
更新时间: 2025-06-28
考研中涉及的排序算法主要有以下几种:
通过相邻元素之间的比较和交换,使得每一趟循环都能找到未排序部分的最小(或最大)元素,并将其放到正确的位置上。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。
每次从未排序的元素中选择最小(或最大)的一个元素,存放到排序序列的起始位置,直到所有元素均排序完毕。选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。
将待排序的元素按大小顺序逐个插入到已经有序的序列中。插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。
采用分治策略,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分继续进行排序,以达到整个序列有序的目的。快速排序的平均时间复杂度为O(n log n),最坏情况下的时间复杂度为O(n^2),但在实际应用中很少达到最坏情况。空间复杂度为O(log n)。
采用分治策略,将序列不断地分成两部分,直到每部分只有一个元素,然后对每部分进行排序,最后将两个有序的子序列合并成一个整体。归并排序的时间复杂度为O(n log n),空间复杂度为O(n)。
是插入排序的一种优化版本,通过将序列分成若干个子序列,对子序列进行插入排序,然后逐步减少子序列的数量,最终使整个序列有序。希尔排序的时间复杂度为O(n log n)到O(n^2)之间,取决于所选的间隔序列,空间复杂度为O(1)。
利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序的时间复杂度为O(n log n),空间复杂度为O(1)。
按照数字的每一位进行排序,从最低位开始,依次进行排序,直到最高位。基数排序的时间复杂度为O(nk),其中n是元素个数,k是数字的位数。空间复杂度为O(n+k)。
这些排序算法各有优缺点,在实际应用中需要根据数据的特点和具体需求选择合适的排序算法。
微信扫码关注公众号
获取更多考试热门资料