首页 » 算法技术手册 » 算法技术手册全文在线阅读

《算法技术手册》驱动因素

关灯直达底部

凸包扫描算法仅仅需要一些原始的操作(如乘法和除法),因此比另外一种凸包算法“Graham扫描”(Graham,1972)要简单得多。Graham算法需要使用三角函数。如果凸包扫描算法使用快速排序来排序点,那么其性能将会受快速排序影响,比如几乎有序的数据情况下,快速排序的性能严重退化(详见第4章“快速排序”)。凸包扫描算法能够支持巨大规模的点集,因为它并不是采用的递归策略。例9-2的实现使用了数组,如果使用链表,那么我们不得不采用插入排序,这将会使性能退化到O(n2)。使用平衡二叉树而不是数组存储输入可以省去排序,虽然实现起来可能更加复杂一些,但是还是合算的。如果输入的点是均匀分布的,那么我们可以使用桶排序,在O(n)的时间内将点排好序,算法最后的总体性能也是O(n),这种实现是最快的。在稍后的“分析”一节中,我们将会分析各种实现的性能,这些实现的代码都可以在代码库中找到。