当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法来衡量一个列表的排序情况?

梁丘洲
2023-03-14

我的意思是,这不是要知道列表是否排序(布尔值),而是像“排序”的比率,像统计学中的相关系数。

例如,

>

  • 如果列表中的项目按升序排列,则其比率为1.0

  • 共有1个答案

    喻渊
    2023-03-14

    您可以简单地计算列表中的反转次数。

    T类型元素序列中的反转是一对序列元素,它们在T集合上按照某种排序<无序出现。

    来自维基百科:

    要实际创建一个算法来计算列表排序方式的得分,有两种方法:

    修改您最喜欢的排序算法,以跟踪它在运行时正在纠正的倒排数。虽然这是一个非常重要的问题,并且根据您选择的排序算法有不同的实现方式,但是您最终得到的算法不会比您开始使用的排序算法更昂贵(就复杂度而言)。

    如果你走这条路,请注意这不是数“掉期”那么简单。例如,Mergesort是最坏的情况O(N logn),但如果它是在按降序排序的列表上运行的,它将纠正所有N choose 2反转。这是O(N logn)操作中更正的O(N^2)反转。因此,某些运算必须不可避免地一次纠正多个反演。你必须小心你的实现。注意:您可以使用o(N logn)复杂度来完成此操作,它只是很棘手。

    相关:计算置换中的“倒置”数

    • 随机采样对(i,j),其中i!=j
    • 对于每个对,确定列表[min(i,j)] (0或1)
    • 计算这些比较的平均值,然后通过n选择2
    • 进行规格化

    我个人会选择随机方法,除非你有精确性的要求--如果只是因为它太容易实现的话。

    z' = -2 * z + 1
    

     类似资料:
    • 我有五个属性的列表,每个属性有五个不同的值。我想生成它们的笛卡尔乘积,并过滤所有独特的排列。 一些背景: 我需要它们作为我的输入值来解决逻辑难题。在那里我对照他们检查规则以找到正确的解决方案。 也许一个简化的例子就能说清楚。 数据: 数据的笛卡尔乘积: 我想要的是: 我不想要的是: 我不希望同一个值多次出现。位置很重要,因此它应该具有置换性质,对于包含五个元素的列表,它应该具有置换性质。我猜输出大

    • 问题内容: 我的网页上有一个“瘦”列表:例如,一个包含100个项目的列表,每个项目的长度为一个单词。为了减少滚动,我想在页面的两列甚至四列中显示此列表。我该如何使用CSS? 我希望该解决方案具有灵活性,这样,如果列表增加到200个项目,则无需进行很多手动调整即可容纳新列表。 问题答案: ul { -moz-column-count: 4; -moz-column-gap: 20px; -webki

    • 本文向大家介绍介绍一下,排序都有哪几种方法?请列举出来。相关面试题,主要包含被问及介绍一下,排序都有哪几种方法?请列举出来。时的应答技巧和注意事项,需要的朋友参考一下 考察点:排序 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 / /使用快速排序方法对a[ 0 :n-

    • 我正在努力用testNG在类级别声明一个参数。我有一个参数,在方法级别声明时可以正常工作。 因为我正在将测试映射到cucumber步骤定义,并将在方法级别声明一个参数,所以我想将browser参数从方法级别转移到类(全局)级别。因此,在xml文件中,我将浏览器参数从测试级别移动到套件级别,如下所示: 然后在测试类中,我从方法和类中删除了参数,并将声明为。不幸的是,浏览器在运行时找不到,导致一个:

    • 问题内容: 是否有一个很好的方法来Map 获取和忽略案件? 问题答案: TreeMap扩展了Map并支持自定义比较器。 字符串提供默认的不区分大小写的比较器。 所以: 比较器不考虑区域设置。在其JavaDoc中阅读有关它的更多信息。

    • 问题内容: 有没有一种方法可以序列化angularjs的功能? 我的帖子现在看起来像这样。 问题答案: 这不是使用AngularJS访问表单数据的方式。表单中的数据应在范围内绑定。 因此,使用一个对象,例如$ scope.formData,它将包含您的所有数据结构,然后应使用ng-model将每个表单元素绑定到此对象。 例如: http://jsfiddle.net/rd13/AvGKj/13/