小编Dyl*_*ler的帖子

排序时非常奇怪的效率怪癖

我目前正在学习数据结构课程,正如您所料,我们要做的一件事就是编写一些常见的排序.在编写我的插入排序算法时,我发现它的运行速度明显快于我的教师的速度(对于400000个数据点,我的算法需要大约30秒,而他的大约需要90秒).我通过电子邮件向他发送了我的代码,当他们在同一台机器上运行时,会发生相同的结果.我们设法浪费了40多分钟,慢慢地将他的排序方法改为我的,直到它完全相同,一字不差,除了一个看似随意的事情.首先,这是我的插入排序代码:

public static int[] insertionSort(int[] A){

    //Check for illegal cases
    if (A == null || A.length == 0){

        throw new IllegalArgumentException("A is not populated");

    }

    for(int i = 0; i < A.length; i++){

        int j = i;

        while(j > 0 && A[j - 1] > A[j]){

            int temp = A[j];
            A[j] = A[j - 1];
            A[j - 1] = temp;

            j--;

        }

    }

    return A;

}
Run Code Online (Sandbox Code Playgroud)

现在,此时他的代码与我的代码完全相同,除了我们交换的行A[j]和A[j - 1].他的代码执行了以下操作:

int temp = A[j - 1];
A[j …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm performance insertion-sort

10
推荐指数
1
解决办法
204
查看次数

制作一个生成另一个给定函数的x和y值的方法

我刚刚开始学习Java Runnable,我听说过Callables.但是,我非常努力解决这个问题.我想创建一个方法,它将一个函数作为参数(无论是作为a Callable,a Runnable还是其他东西,只要我可以简单地调用函数coolNewFunction(() -> otherFunction(), 100)或类似的简单方法)并且该方法将返回一个数组返回值的otherFunction.例如,假设我定义了该函数

public static int square(int x){

    return x * x;

} 
Run Code Online (Sandbox Code Playgroud)

然后我可以做一些事情:

coolNewFunction(() -> square(), 100)
Run Code Online (Sandbox Code Playgroud)

这将返回前100个数字及其正方形(即{{1, 1}, {2, 4}, {3, 9}...})的数组.现在,我知道这lambda () -> square()不会起作用,因为square必须传递一个值.我虽然创建了一个100 Runnable秒的数组,每个数组都有下一个参数square,但该方法仍然run()没有返回任何内容.所以,长话短说,一个方法会是什么样的,它会评估另一个函数,它作为一个参数给出,就像square在不同的x值一样,并返回一个该评估的数组?此外,我最好不要开始任何新的线程,虽然这是唯一可以实现这一点的方法.最后,我不想以square特殊方式(最好)实现(或其他)功能.

java lambda callable runnable java-8

5
推荐指数
1
解决办法
67
查看次数

虚拟环境的结构应该是什么样的

这是我第一次真正使用它之一virtualenv,当我第一次激活它时,我(并且)对我的实际项目(如代码)的位置感到有些困惑.目前(制作和激活后virtualenv)这是我的项目的样子PyCharm:

Project Name
|-project-name      <= I called my virtualenv project-name
  |-bin
    |-Lots of stuff here
  |-include
    |-Lots of stuff here
  |-lib
    |-Lots of stuff here
  |-.Python
  |-pip-selfcheck.json
Run Code Online (Sandbox Code Playgroud)

在这种环境中,我应该在哪里放置我的实际代码?

python development-environment virtualenv pycharm python-3.x

5
推荐指数
2
解决办法
1480
查看次数

如何找到文本主体的主题

我知道在NLP中确定句子主题或可能是段落是一个挑战.但是,我试图确定标题可能是什么类似维基百科的文章(当然不使用其他方法).我唯一能找到最常用的词.关于纽约市的文章,这些是最好的结果:

[('new', 429), ('city', 380), ('york', 361), ("'s", 177), ('manhattan', 90), ('world', 84), ('united', 78), ('states', 74), ('===', 70), ('island', 68), ('largest', 66), ('park', 64), ('also', 56), ('area', 52), ('american', 49)]
Run Code Online (Sandbox Code Playgroud)

从中我可以看出某种统计意义是从361急剧下降到177.无论如何,我既不是统计学家也不是NLP专家(事实上我两者都是一个完整的菜鸟)所以这是一种可行的方法来确定较长文本主题.如果是这样,我想用什么数学来计算呢?如果没有,NLP中还有其他方法可以确定更大的文本主题或标题吗?作为参考,我使用的是nltk和Python 3.

python nlp nltk python-3.x

0
推荐指数
1
解决办法
2800
查看次数