408考研之数据结构的排序——冒泡排序和快速排序

本人参考王道考研视频写作,如有侵权会即刻删除

TIPS:交换排序中,冒泡排序基本上涉及不多;快排不管是大题小题都是高频考点:快排算法建议直接暴力解决,实在不会当成考研八股文背诵,一旦遇到排序算法直接背诵拿分。

交换排序的定义:根据序列中两个元素关键字的比较结果来交换这俩个记录在序列中的位置。

考研中交换排序可分为:冒泡排序和快速排序。

冒泡排序——bubble sort:从前往后/从后往前,两两比较两相邻元素的值,若为逆序则交换,直到序列比较完成,为一趟冒泡排序,此时确定了一个值的位置;N个关键字最多可经过N-1趟冒泡可完成排序。

408考研之数据结构的排序——冒泡排序和快速排序_第1张图片

408考研之数据结构的排序——冒泡排序和快速排序_第2张图片

上例为从后往前,依次两两比较相邻元素,如果是逆序则交换,经过一整趟排序后,关键字最小的值已经得出,以此类推。

总结:冒泡排序的算法空间复杂度为:O(1);时间复杂度为:O(N^2);冒泡排序是稳定的;适用于顺序表和链表。(个人理解:如果是链表的话,可按照从前往后的顺序遍历链表,一趟排序可找出一个最大的关键字,符合冒泡排序的定义)

TIPS:快排代码特别重要,一定要会熟练理解,直至默写,因为考研一旦遇到排序,可以无脑写快排,建议当成文科背诵快排算法。

快速排序——quick sort,算法思想:选择一个枢轴元素,通过一趟排序,确定一个枢轴元素的最终位置,同时将大于枢轴元素的值放置在枢轴元素的右边,小于枢轴元素的值放置在枢轴元素的左边,然后对划分后的枢轴元素两边的子表进行递归定义即可。

408考研之数据结构的排序——冒泡排序和快速排序_第3张图片408考研之数据结构的排序——冒泡排序和快速排序_第4张图片

总结:快速排序的空间复杂度为O(递归层数)=O(log2 n),平均时间复杂度为O(n*递归层数)=O(nlog2 n);快排是不稳定的。

你可能感兴趣的:(#,408数据结构——排序章节,数据结构,排序算法,算法,考研)