大家好,我想写一个小的Java程序来帮助我对列表进行排序。想象一下列表看起来像这样: 苹果,葡萄柚,香蕉,菠萝,椰子
现在,我不想按字母顺序或类似的方式进行排序,例如,按我最喜欢的水果进行排序,因此排序后的列表可能看起来像这样:椰子,香蕉,苹果,菠萝,葡萄柚
到目前为止,我的想法是可以这样进行:将苹果写入列表。然后将葡萄柚和苹果进行比较,然后用户说出他更喜欢的东西(在这里是苹果),这样葡萄柚就移到了苹果之下。然后,它将香蕉与例如苹果进行比较,并且用户告诉程序他更喜欢香蕉,因此该程序超越了苹果,并且不再需要与葡萄柚进行比较,从而节省了大量时间。该程序最终应处理几百个条目和比较项,因此通过问较少的问题来节省时间将节省大量时间。我在正确的轨道上吗?另外,输入列表,数组,arraylist或...的最佳方法是什么?
应该如何实施?有合适的分类算法吗?提前致谢!
问题来源:Stack Overflow
您应该构建一个二进制搜索树。
插入新水果时,您会问用户他们最喜欢哪个水果,以在哪里插入新水果节点。要减少问题数量,请保持树平衡。
一旦构建了“首选项树”,就可以对树进行深度优先的迭代,为每个水果分配递增的“首选项值”,并构建一个Map<String, Integer>,这样您就可以快速查找任何水果首选项值,也就是排序序列号。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。