小编Phr*_*gyy的帖子

最快的算法,以确定数组是否至少有一个重复

我这里有一个非常奇怪的案例.我有一个包含数百万条目的文件,并想知道是否存在至少一个重复项.这里的语言不是很重要,但C似乎是速度的合理选择.现在,我想知道的是采取什么样的方法?速度是这里的主要目标.当然,我们希望一旦找到一个副本就停止查看,这很清楚,但是当数据进入时,我不知道它是如何排序的.我只知道它是一个字符串文件,由换行符分隔.现在请记住,我想知道的是,是否存在重复.现在,我发现了许多关于在数组中查找所有重复项的问题,但是大多数问题都是简单而全面的,而不是最快的.

因此,我想知道:找出一个数组是否包含至少一个副本的最快方法是什么?到目前为止,我能在SO上找到的最接近的是:找出数组中的重复元素.选择的语言并不重要,但是因为它毕竟是编程,所以多线程是可能的(我只是不确定这是否是一种可行的方法).

最后,字符串的格式为XXXNNN(3个字符和3个整数).

请注意,这不是严格的理论.这一台机器(英特尔i7处理器搭配8GB RAM)上进行测试,所以我必须考虑让字符串比较等等.这就是为什么我也想知道,如果它可能是时间于分割字符串二,首先比较整数部分,因为int比较会更快,然后是字符串部分?当然,这也需要我拆分字符串并将后半部分转换为int,这可能会更慢......

c algorithm

6
推荐指数
1
解决办法
477
查看次数

在Haskell中对列表中的元组进行排序

因此,在互联网上搜索了一段时间以获得一个很好的解决方案后,我已经到了路的尽头.

我目前面临着一些关于文本处理的Haskell问题,而且大部分问题一直都很顺利.但是,我现在坚持在列表中排序元组.

基本上,我有一个元组列表,所以有类似的东西

list = [("hey","there"),("there","hey"),("bears","are")]
Run Code Online (Sandbox Code Playgroud)

我现在的目标是在内部对元组进行排序,以便我收到

list = [("hey","there"),("hey","there"),("are","bears")]
Run Code Online (Sandbox Code Playgroud)

然后,我将运行一个group $ sort list以便能够检索有多少等效对的计数.换句话说,("hey,"there")相当于("there","hey").

到目前为止我尝试过的是使用地图功能.但是,似乎你不能使用map函数运行列表操作,但至少要尝试理解我的最终目标是什么,这是我到目前为止所取得的成就.

countup tuples =
    let final =
        sort sorted_internal where
            sorted_internal = map (\x->(sort x)) tuples
    in map (\x->(head x, length x)) final
Run Code Online (Sandbox Code Playgroud)

sorting haskell list

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

标签 统计

algorithm ×1

c ×1

haskell ×1

list ×1

sorting ×1