有没有办法衡量列表的排序方式?
我的意思是,它不是要知道列表是否排序(布尔值),而是类似"排序"的比例,类似于统计中的相关系数.
例如,
如果列表中的项目按升序排列,则其速率将为1.0
如果列表按降序排序,则其速率为-1.0
如果列表几乎按升序排序,则其速率将为0.9或某个值接近1.
如果列表根本没有排序(随机),则其速率将接近0
我正在Scala写一个小型图书馆进行练习.我认为排序率会很有用,但我找不到任何类似的信息.也许我不知道这个概念的适当术语.
我知道这可能是一个愚蠢的问题,也许是今天最愚蠢的问题,但我不得不问:我是否发明了这种排序算法?
昨天,我对基于交换的排序算法有了一些启发.今天,我实现了它,并且它有效.
它可能已经存在,因为有很多不那么受欢迎的排序算法,它们很少或根本没有信息,几乎没有实现它们.
描述:基本上,这个算法采用一个项目,它们是一对,然后是一个项目......直到列表的末尾.对于每个项目/对,比较距离对空间或项目相同半径距离的每两个项目,直到到达阵列的边界,然后根据需要交换这些项目.对列表中的每对/项重复此操作.
基于英语的伪代码:
FOR i index to last index of Array (starting from 0)
L index is i - 1
R index is i + 1
//Odd case, where i is the center
WHILE (L is in array range and R is in array range)
IF item Array[L] is greater than Array[R]
EXCHANGE item Array[L] with Array[R]
END-IF
ADD 1 to R
REST 1 to L
END-WHILE
//Even case, where i is not the center
L …Run Code Online (Sandbox Code Playgroud) ...或者我可以毫无问题地使用ICollection吗?
我的意思是,我不认为ICollection是为Sorted集合设计的,因为这可能会破坏为排序或未插入的ICollection对象设计的应用程序,但我不知道.
我正在练习在二叉搜索树上删除节点,并且我使用空模式为空链接(NullNode)创建了一个特殊类型,因此我可以为"null"类型添加一些理想的行为.两个节点类型和Nullnode类型共享相同的INODE接口,其中包括递归方法.
该索引节点接口包括IEnumerable的递归方法POR预购,序和后序遍历,但是我不想NullNode返回任何元素(通过产量return语句).
我能做什么?
我知道我可以使用一个不可能的if条件,然后在方法中放一个yield return语句,但我不认为这个解决方案是好的.应该有一个更好的方法.
我的意思是,命名参数似乎是某种方式的签名:您不能使用任何名称并且仅尊重参数的位置来调用命名方法。但是,我们不能创建两个具有相同签名和名称但使用不同参数名称的方法。
接口可以强制类的方法使用给定参数的名称吗?
使用命名参数:
int i = Function(NamedArgument: x);
不使用命名参数:
int i = 函数(x);