首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个“领带中断”数据集的排序

多个“领带中断”数据集的排序
EN

Software Engineering用户
提问于 2016-08-11 03:53:25
回答 1查看 1.2K关注 0票数 2

我目前正在使用Swift开发一个软件项目,它需要几种不同类型的排序机制。我一直在搜索,但没有结果,我一直在寻找一种算法来处理打破领带的问题。换句话说,假设您有一个数据集,可以这样表示:

代码语言:javascript
复制
[Name Of Data]:[Someone's ID]-[Same Someone's Score],[Someone's ID]-[Same Someone's Score],[etc...]\n
[Name Of Data]:[Someone's ID]-[Same Someone's Score],[Someone's ID]-[Same Someone's Score],[etc...]\n
[etc...]

那么,有一行可能是这样的:

代码语言:javascript
复制
Wins:7-1,8-1,9-1,2-1,10-1,3-0,4-0,5-0,1-0,6-0

另一个看起来是这样的:

代码语言:javascript
复制
SpeakerPoints:6-26,2-20,4-19,7-17,8-16,9-16,5-16,1-12,3-11,10-8

我希望能够按照“胜利者”对in进行排序,其中“胜利者”标准是第一位的,如果有平分,程序将移到“SpeakerPoints”标准,等等……

通常,我会使用特定于平台的机制(比如LINQ用于Windows,NSSortDescriptor用于MacOS)。然而,该项目是“共享代码”,应该在任何必要的平台上编译。如果有关系的话,我使用的是Silver,这是苹果Swift的一个实现,用于编译Windows/MacOS/iOS/Android/等等.目标,所以我基本上只限于使用“纯迅捷”(纯粹的斯威夫特代码工作非常好)。我如何实现一种类型来做到这一点呢?我不关心算法是否高效(虽然我也不希望一个简单的排序需要几个小时,我自己也可以这样做:P),只要它返回正确排序的ID,修改后的气泡排序就可以了。

复杂的是,标准的数量也是一个变量:这一次可能是winsspeakerPoints,但下一次可能包括opponentWins

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-08-11 14:14:30

在实现排序算法时,只需创建一个返回大于、等于或小于给定两个输入的函数。你不需要担心胜利+说话人点+任何东西的绝对值。

因此,使用或创建一个只使用注入的任意排序算法(例如,气泡排序):

代码语言:javascript
复制
IComparer
{
    Int Compare(x, y); // return 1,0,-1
}

然后,您可以编写一个具体的实现与所需,比较胜利,比较说话人点等。

在注入一个IComparers数组时,您可以想象更多的天才解决方案。但最好还是让它简单一点。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/328142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档