还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《更快的排序》课件ppt•排序算法概述•快速排序算法•归并排序算法•堆排序算法目录•各种排序算法的比较和选择contents01排序算法概述排序的定义和重要性排序的定义将一组数据按照一定的顺序排列,以便更好地满足某些特定需求排序的重要性在数据处理、信息检索、数据库管理等领域中,排序是必不可少的操作排序算法的分类按照时间复杂度分类线性时间复杂度排序(如计数排序、基数排序)、对数时间复杂度排序(如快速排序、归并排序)、平方时间复杂度排序(如冒泡排序、插入排序)按照稳定性分类稳定的排序算法(如冒泡排序、插入排序、归并排序)、不稳定的排序算法(如快速排序、希尔排序)排序算法的性能指标01020304正确性时间复杂度空间复杂度稳定性算法能够正确地对数据进行排算法执行时间与数据规模之间算法所需额外空间与数据规模相同元素在排序后保持原有顺序的关系之间的关系序的能力02快速排序算法快速排序的原理快速排序是一种分治算法,通过将数组快速排序的基本思想是选择一个基准元快速排序的时间复杂度为Onlogn,分成两个子数组,分别对子数组进行排素,将数组中小于基准的元素放在基准在平均情况下具有较好的性能序,从而达到排序整个数组的目的的左边,将大于基准的元素放在基准的右边,然后对左右两个子数组递归进行此过程快速排序的算法实现选取基准元素分区操作可以选择数组的第一个元素、最后一个元将数组分为左右两个子数组,小于基准的素或者随机选择一个元素作为基准元素放在左边,大于基准的元素放在右边,同时记录左边界和右边界递归排序合并结果对左右两个子数组递归进行快速排序将左右两个已排序的子数组合并成一个有序数组快速排序的性能分析最好情况最坏情况平均情况空间复杂度当每次选取的基准元素都当每次选取的基准元素都在平均情况下,时间复杂快速排序的原地算法需要是当前未排序部分的最小是当前未排序部分的最大度为Onlogn额外的空间,空间复杂度(或最大)元素时,时间(或最小)元素时,时间为Ologn复杂度为Onlogn复杂度为On^203归并排序算法归并排序的原理归并排序是一种分治算法,它将一个大的数组分成两个较小的子数组,分别对子数组进行排序,然后将有序的子数组合并成一个有序的大数组归并排序的基本思想是将两个或两个以上的有序表合并成一个新的有序表归并排序的时间复杂度为Onlogn,其中n是待排序数组的长度归并排序的算法实现010203分解解决合并将待排序数组分解成若干递归地对子数组进行排序,将两个有序的子数组合并个子数组,每个子数组的并将已排序的子数组合并成一个大的有序数组长度为1或2成一个大的有序数组归并排序的性能分析01020304归并排序的时间复杂度为归并排序的空间复杂度为归并排序是一种稳定的排序算归并排序在处理大数据集时表Onlogn,其中n是待排序数On,需要额外的空间来存法,即相等的元素在排序后保现良好,但在处理小数据集时组的长度储子数组和合并后的有序数组持其原始顺序可能不如其他算法高效04堆排序算法堆排序的原理二叉堆分为最大堆和最小堆,最大堆中父节点的值总是大于或等于其子节点的值,最小堆中父节点的值总是小于或等于其子节点的值堆排序是一种基于比较的排序算法,利用了二叉堆数堆排序的基本思路是将一个无序数组构建成一个大顶据结构的特性进行排序堆(或小顶堆),然后将堆顶元素(最大值或最小值)与堆尾元素互换,之后将剩余元素重新调整为大顶堆(或小顶堆),以此类推,直到整个数组有序堆排序的算法实现算法步骤
1.将数组构建成大顶堆(或小顶堆)
01022.将堆顶元素(最大值或最小值)与堆尾
3.将剩余元素重新调整为大顶堆(或小顶0304元素互换堆)
4.重复步骤2和3,直到整个数组有序时间复杂度Onlogn0506堆排序的性能分析优点
1.算法实现简单,时间复杂度
2.在数据量较大时,堆排序相较低对于其他排序算法具有较好的010203性能缺点
1.堆排序在数据量较小时,性
2.堆排序在处理特定类型的数能不如插入排序等算法据时(如递增或递减序列),040506性能较差05各种排序算法的比较和选择各种排序算法的时间复杂度比较快速排序平均时间复杂度为Onlogn,最坏情况下为On^2选择排序归并排序时间复杂度为On^2时间复杂度为Onlogn插入排序堆排序时间复杂度为On^2时间复杂度为Onlogn各种排序算法的空间复杂度比较归并排序插入排序需要额外的空间,不需要额外的空间空间复杂度为On快速排序堆排序选择排序需要额外的空间,空间复杂度为不需要额外的空间不需要额外的空间Ologn根据实际情况选择合适的排序算法对于大量数据,快速排序和堆对于小数据集,插入排序和选对于稳定排序,归并排序是较排序是较好的选择,因为它们择排序是较合适的选择,因为好的选择的平均时间复杂度较低它们的空间复杂度较低THANK YOU。