用于比较判断的排序算法

时间:2016-03-10 23:05:31

标签: algorithm sorting

我正在使用自适应比较判断进行研究,其中我向用户呈现两件事,并让他们选择哪一件更难以理解。目前我正在考虑测试10件事情,但会进一步扩展。

我一直在研究如何根据每个项目的难度对数据进行排序,并对布拉德利 - 特里和瑟斯顿的模型进行分类,但它们太过数学让我无法理解,所以我想知道是否有人做了类似的事情,并知道如何编写代码来进行这种类型的排序。

举一个例子,在这个网站https://nomoremarking.com/demo1上有一个颜色测试,它要求用户在两种颜色之间选择颜色较深的颜色并自动对结果进行排序。那是我感兴趣的分类。
谢谢!

1 个答案:

答案 0 :(得分:1)

在我看来,您希望尽量减少用户必须进行的比较。作为基线,您可以使用插入排序变体来决定在O(log n)中插入新项目的最佳位置。以下是Python中对整数进行排序的示例:

import bisect, random

class InputCompare(object):
    def __init__(self, value):
        self.value = value
    def __lt__(self, other):
        print 'Is', other.value, 'greater than', self.value, '? (y/n)',
        return raw_input().lower() == 'y'

A = range(8)
random.shuffle(A)

print 'Sorting:', A

B = []
for x in A:
    bisect.insort(B, InputCompare(x))

print [x.value for x in B]

该程序询问有关数字对的问题以确定其总顺序,如下所示:

Sorting: [4, 7, 2, 6, 1, 5, 0, 3]
Is 4 greater than 7 ? (y/n) n
Is 7 greater than 2 ? (y/n) y
Is 4 greater than 2 ? (y/n) y
Is 4 greater than 6 ? (y/n) n
Is 7 greater than 6 ? (y/n) y
Is 6 greater than 1 ? (y/n) y
Is 4 greater than 1 ? (y/n) y
Is 2 greater than 1 ? (y/n) y
Is 4 greater than 5 ? (y/n) n
Is 7 greater than 5 ? (y/n) y
Is 6 greater than 5 ? (y/n) y
Is 5 greater than 0 ? (y/n) y
Is 2 greater than 0 ? (y/n) y
Is 1 greater than 0 ? (y/n) y
Is 4 greater than 3 ? (y/n) y
Is 1 greater than 3 ? (y/n) n
Is 2 greater than 3 ? (y/n) n
[0, 1, 2, 3, 4, 5, 6, 7]
相关问题