回 帖 发 新 帖 刷新版面

主题:估计有序度

这只是一个想法,也许不那么有用.
我还没能给明确有序度下个精确的定义,但大致就是数列中最长有序子序列和全长的比吧. [插入排序]在数列有序度越高的时候越有效. 所以有序度就可以准确地用插入排序所需的数据移动总次数/数列长度n来表达. 不过为了判断有序度而做一次排序是不是太sb了?

如果能做出有序度的估计值也好啊,上限定在O(n)...

回复列表 (共2个回复)

沙发

求最长递增子序列有O(nlogn)的算法。
你最近在研究排序?原来还看到过一个记数排序法,感觉也很不错O(n)的复杂度的。

板凳

或许可以用下面的方法估值:
float order_rote (int arr[], int n)
//按非降排序
{
    int unord = 0, i;

    if (n < 1) return 1.0;
    for (i = 1; i < n; ++i)
        if (arr[i] >= arr[i - 1])
            unord++;

    return (float)unord / n;
}

btw: 五一学了点CG和ogl.我现在很惨,电脑被搬走了,下周还有3门考试.[em10]

我来回复

您尚未登录,请登录后再回复。点此登录或注册