一,凸包-----5,Jarvis March

本文详细介绍了JarvisMarch算法,涉及其借鉴的选择排序原理,确定初始点的方法,以及如何通过特性获取凸包边。算法的优点在于时间复杂度在极端情况下为O(n^2),但边数恒定时降至O(N)。
摘要由CSDN通过智能技术生成

四个问题:
一,Jarvis March算法借鉴了什么算法?
二,如何确定初始点
三,如何获取凸包的边?
四,Jarvis March算法的好处在哪里?

首先看第一个问题,
一,Jarvis March算法借鉴了什么算法?
Jarvis March算法借鉴了选择排序,从未排序的数组中,选出最大值,放入已排序数组的首部。
在这里插入图片描述

在这里插入图片描述

同样从上图可以看到,组成凸包的过程0/5->1/5->2/5->3/5->4/5->5/5,找到新的合适的点后依次首尾相连。

二,如何确定初始点?
万事开头难,从哪里开始呢?如果水平轴是X轴,竖直轴是Y轴,那么找最下面的,即Y最小的那个点,如果有若干个点都是最小的Y值,那么找最左边的,即,先找最下,再找最左,必定是凸包上的顶点。以此点为初始点。

在这里插入图片描述

三,如何获取凸包的边?
凸包上的点有特征,如果逆时针看,凸包的右侧必定为空。也就是说,其他的点必定在组成凸包的边的左侧。
这样可以通过连接凸包上的最后一个点和未组成凸包的点的连线,查看是否有在右侧的,如果有,则说明在右侧的点比当前点更适合做凸包的边。这样,总能找到最合适的下一条边。
在这里插入图片描述
四,Jarvis March算法的好处在哪里?在这里插入图片描述

如上图所示,好处在于时间复杂度最差是O(n2),即所有的点都是凸包上的点。但是如果边数是常量,3个,4个或其他常量,时间复杂度就成了O(N)了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值