排序 24个相关结果 316次搜索

数据结构与算法三十二:拓扑排序

从今天开始,我们就进入了专栏的高级篇。相对基础篇,高级篇涉及的知识点,都比较零散,不是太系统。所以,我会围绕一个实际软件开发的问题,在阐述具体解决方法的过程中,将涉及的知识点给你详细讲解出来。 所以,相较于基础篇“开篇问题 – 知识讲解 – …

数据结构与算法十八:堆和堆排序

我们今天讲另外一种特殊的树,“堆”(Heap)。堆这种数据结构的应用场景非常多,最经典的莫过于堆排序了。堆排序是一种原地的、时间复杂度为 O(nlogn) 的排序算法。 前面我们学过快速排序,平均情况下,它的时间复杂度为 O(nlogn)。 …

数据结构与算法十:排序优化

如何选择合适的排序算法? 如果要实现一个通用的、高效率的排序函数,应该选择哪种排序算法? 前面讲过,线性排序算法的时间复杂度比较低,适用场景比较特殊。所以如果要写一个通用的排序函数,不能选择线性排序算法。 如果对小规模数据进行排序,可以选择 …

数据结构与算法九:线性排序

这一节讲述三种时间复杂度是O(n)的排序算法:桶排序、技术排序、基数排序。因为这些排序算法的时间复杂度是线性的,所以又叫作线性排序(Linear sort)。之所以能做到线性的时间复杂度,主要原因是,这三个算法是非基于比较的排序算法,都不涉 …

数据结构与算法八:排序(下)

上一节讲述了冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是O(n²),比较高,适合小规模数据的排序。这一节讲两种时间复杂度为O(nlogn)的排序算法,归并排序和**快速排序***。 归并排序原理 归并排序的核心思想很简单 …

数据结构与算法八:排序(上)

如何分析一个“排序算法” 学习排序算法,我们除了学习它的算法原理、代码实现之外,更重要的是要学会如何评价、分析一个排序算法。那分析一个排序算法,要从哪几个方面入手呢? ==排序算法的执行效率== 对于排序算法执行效率的分析,我们一般会从这几 …

PHP二位数组排序

function list_sort_by($list, $field, $sortby = ‘asc’) { if (is_array($list)) { $refer = $resultSet = array(); foreach ($ …

数据结构与算法四十:并行算法

时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度并不能跟性能划等号。在真实的软件开发中,即便在不降低时间复杂度的情况下,也可以通过一些优化手段,提升代码的执行效率。毕竟,对于实际的软件开发来说,即便是像 10%、20% 这样微小的性 …

数据结构与算法二十七:分治算法

MapReduce 是 Google 大数据处理的三驾马车之一,另外两个是 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。 尽管开发一个 MapReduce 看起来很高深, …

数据结构与算法二十六:贪心算法

基础的数据结构和算法我们基本上学完了,接下来几节,我会讲几种更加基本的算法。它们分别是贪心算法、分治算法、回溯算法、动态规划。更加确切地说,它们应该是算法思想,并不是具体的算法,常用来指导我们设计具体的算法和编码等。 贪心、分治、回溯、动态 …