标签:java arrays algorithm coordinates
我一直在思考这个问题 – 我认为这很简单,但我的几何/代数很垃圾,我不记得在我上学的日子里怎么做这些东西!
编辑:
我有一个人们站在他们旁边的坐标列表 – 我需要一个算法来从列表(数组)中从左上角到右下角订购人员,而第二个标准要求更接近左上角的坐标占据优势所有其他人 – 你会怎么做?
代码应显示顺序为:
>汤姆
>哈利
>鲍勃
>戴夫
见下图:
解决方法:
根据您的订购,看起来您将y位置放在比x位置更高的优先级,所以这样的事情在比较两个人时会起作用:
if (a.y > b.y)
// a is before b
else if (a.x < b.x)
// a is before b
else
// b is before a
编辑更新
此比较仍适用于您的新标准. Y位置仍然优先于X位置.如果Y值相等,则最靠近左上角的点将是具有较小X值的点.如果你想让你的对象成为比较器,那么将它作为比较器函数实现将允许你做ArrayList.sort(),其中negative表示第一个人在第二个人之前:
public int compareTo(person a, person b) {
if (a.y == b.y)
return a.x-b.x
else
return b.y-a.y
}
//compareTo(Tom, Harry) == -50 (tom is before harry)
//compareTo(Tom, Bob) == -25 (tom is before bob)
//compareTo(Dave, Bob) == 30 (dave is after bob)
标签:java,arrays,algorithm,coordinates 来源: https://codeday.me/bug/20190724/1520153.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。