我写了分配排序算法正确性的证明,我的教授认为这是错误的,我认为我是对的。
我的证明:
分配计数
基本情况:第一个for循环设置D [j] =0。最初所有元素的计数为0因此,我们有了一个包含元素的数组 为0。现在,我们将计算给定数组中的每个元素,然后将 在适当的地方计数。
现在,它将遍历数组中的每个元素,并且每次出现一个值时,它将在数组中的计数器中递增 (D [j]现在,我们将通过添加前一个 数)。
现在数组D [j]中的每个键代表数组中的一个值,因此我们将元素添加到输入数组(S [j])并减小 在D [j]数组中加1,直到计数器为0。因此,每个 元素值放置在数组(s [j])的正确位置。因此 元素按升序排序。
终止:我们从上面知道S [j]包含已排序或升序的元素,因此它被排序了,因此 将终止。因此,S [1] <= S [2] <=…<= S [n]
我已经写了证明,我认为这是对的,因为我只是假设已经在算法中给出的东西并使用它来试图证明它,但是据我的教授说,这是非常错误的。
SELECT datevalue
FROM dateformats
GROUP BY datevalue
HAVING COUNT(*) > 1;
我认为我的证明是正确的,但如果没有,请向我解释我做错了什么?感谢您的帮助