如何将归并排序算法改写为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1044个文字,预计阅读时间需要5分钟。
算法描述+本节中的第一种高级排序算法是归并排序。‘归并’一词,意为‘合并’。顾名思义,归并排序算法先将序列为子序列,对子序列进行排序,再将有序的子序列合并成有序序列。
算法描述本节中的第一种高级排序算法是归并排序。“归并”一词,意为“合并”。顾名思义,归并排序算法就是一个先把数列拆分为子数列,对子数列进行排序后,再把有序的子数列合并为完整的有序数列的算法。它实际上采用了分治的思想。
归并排序的平均时间复杂度是O(nlgn),最好情况下的时间复杂度是O(nlgn),最坏情况下的时间复杂度也是O(nlgn)。它的空间复杂度是O(1)。另外,归并排序还是一个稳定的排序算法。
以升序排序为例,归并算法的流程如图2-21所示。
原始数组是一个有8个数的无序数组。一次操作后,把8个数的数组分成两个4个数组成的无序数组。每个操作都将无序数组分成两半,直至所有最小的子数组仅包含一个元素。当数组里只有一个元素时,这个数组必定是有序的。然后,程序开始把小的有序数组每两个合并成为大的有序数组。首先是将两个包含一个数的数组合并成一个包含两个数的数组,然后再把两个包含两个数的数组合并成一个包含四个数的数组,最后合并成一个包含八个数的数组。当所有有序数组合并完毕时,形成的最长有序数组就完成排序。
本文共计1044个文字,预计阅读时间需要5分钟。
算法描述+本节中的第一种高级排序算法是归并排序。‘归并’一词,意为‘合并’。顾名思义,归并排序算法先将序列为子序列,对子序列进行排序,再将有序的子序列合并成有序序列。
算法描述本节中的第一种高级排序算法是归并排序。“归并”一词,意为“合并”。顾名思义,归并排序算法就是一个先把数列拆分为子数列,对子数列进行排序后,再把有序的子数列合并为完整的有序数列的算法。它实际上采用了分治的思想。
归并排序的平均时间复杂度是O(nlgn),最好情况下的时间复杂度是O(nlgn),最坏情况下的时间复杂度也是O(nlgn)。它的空间复杂度是O(1)。另外,归并排序还是一个稳定的排序算法。
以升序排序为例,归并算法的流程如图2-21所示。
原始数组是一个有8个数的无序数组。一次操作后,把8个数的数组分成两个4个数组成的无序数组。每个操作都将无序数组分成两半,直至所有最小的子数组仅包含一个元素。当数组里只有一个元素时,这个数组必定是有序的。然后,程序开始把小的有序数组每两个合并成为大的有序数组。首先是将两个包含一个数的数组合并成一个包含两个数的数组,然后再把两个包含两个数的数组合并成一个包含四个数的数组,最后合并成一个包含八个数的数组。当所有有序数组合并完毕时,形成的最长有序数组就完成排序。

