摘要: 印象 图1 使用合并排序为一列数字进行排序的过程 思想 归并排序是典型的分治算法,它不断地将某个数组分为两个部分,分别对左子数组与右子数组进行排序,然后将两个数组合并为新的有序数组。 分析 稳定: 是 时间复杂度: 最优时间: O(nlog(n)) 最坏时间: O(nlog(n)) 平均时间: O( 阅读全文
posted @ 2019-02-25 17:36 郑大峰 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 印象 图1 将元素分布在桶中 图2 元素在每个桶中排序 思想 桶排序将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。 分析 时间复杂度: 最优时间: Ω(n + k) 最坏时间: O(n^2) 平均时间:Θ(n + k) 参考 "Wik 阅读全文
posted @ 2019-02-25 17:31 郑大峰 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 印象 图2 快速排序过程 思想 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 分析 稳定: 否 时间复杂度: 最优时间: O(nlog(n)) 最坏时间: O(n^2) 平均时间: O(nl 阅读全文
posted @ 2019-02-25 17:18 郑大峰 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 印象 图1 插入排序过程 思想 插入排序(Insertion Sort)的主要思想是不断地将待排序的元素插入到有序序列中,是有序序列不断地扩大,直至所有元素都被插入到有序序列中。 分析 时间复杂度: 最优时间: O($n 1$) 最坏时间: O($\frac{1}{2}n(n 1)$) 平均时间: 阅读全文
posted @ 2019-02-25 15:24 郑大峰 阅读(126) 评论(0) 推荐(0) 编辑