Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 什么';排序文本值的最有效方法是什么?_Sorting_Haskell - Fatal编程技术网

Sorting 什么';排序文本值的最有效方法是什么?

Sorting 什么';排序文本值的最有效方法是什么?,sorting,haskell,Sorting,Haskell,如果我有一个要排序的Data.Text值,我是否应该将其解包为字符串,并对其使用排序或其他函数?当cons和append都是O(n)时,似乎很难为文本值编写快速排序函数 取决于“排序”文本的含义。Text类型的大部分价值都与正确处理奇怪的人类语言不一致性有关。在考虑这些变量时,最好的排序方法可能是使用文本icu import Data.Text.ICU import qualified Data.Text as T -- | Uses the Unicode Col

如果我有一个要排序的
Data.Text
值,我是否应该将其解包为
字符串
,并对其使用
排序
或其他函数?当cons和append都是O(n)时,似乎很难为文本值编写快速排序函数

取决于“排序”
文本的含义。
Text
类型的大部分价值都与正确处理奇怪的人类语言不一致性有关。在考虑这些变量时,最好的排序方法可能是使用
文本icu

import           Data.Text.ICU
import qualified Data.Text     as T

-- | Uses the Unicode Collation Algorithm. Others can be chosen by picking 
-- something other than `uca` as your Collator.
sortText :: [T.Text] -> [T.Text]
sortText = sortBy (sortKey uca)

如果按照问题中的建议将字符串解包,然后按字典字符顺序比较字符串,则速度可能会较慢(
string
Text
大得多)但是如果你有Unicode
Text
值,你肯定会打开奇怪排序顺序和奇怪重新打包的可能性。

取决于你所说的“排序”
Text
的意思。
Text
类型的大部分价值都与正确处理奇怪的人类语言不一致性有关。在考虑这些变量时,最好的排序方法可能是使用
文本icu

import           Data.Text.ICU
import qualified Data.Text     as T

-- | Uses the Unicode Collation Algorithm. Others can be chosen by picking 
-- something other than `uca` as your Collator.
sortText :: [T.Text] -> [T.Text]
sortText = sortBy (sortKey uca)

如果按照问题中的建议将字符串解包,然后按字典字符顺序比较字符串,则速度可能会较慢(
string
Text
大得多)但是如果你有Unicode
Text
值,你肯定会打开奇怪的排序顺序和奇怪的重新打包的可能性。

你的意思是问一个
Text
值列表的排序,在这种情况下,构建
Text
值的成本是无关的吗,我的意思是对文本值进行排序,就像对字符串进行排序一样。就像从一个文件中读取一些文本,然后对其进行排序。但是在这里,您仍然在对字符串列表进行排序,每个字符串都是文件的一行。如果实际将
排序
应用于
字符串
,则会得到类似于
“0014555AAAABBQ…”
;这真的是你想要做的吗?是的,这就是我想要做的。我正在为Haskell practice编写一些文本压缩算法,我正在尝试编写Burrows-Wheeler变换,这需要排序。如果您使用Burrows-Wheeler,那么您需要使用固定的字母表,而不一定是ASCII。如果您愿意,您可以在原始字节上执行此操作。您的意思是询问如何对
文本
值列表进行排序,在这种情况下,构建
文本
值的成本是无关的吗?不,我的意思是以与对字符串排序相同的方式对文本值进行排序。就像从一个文件中读取一些文本,然后对其进行排序。但是在这里,您仍然在对字符串列表进行排序,每个字符串都是文件的一行。如果实际将
排序
应用于
字符串
,则会得到类似于
“0014555AAAABBQ…”
;这真的是你想要做的吗?是的,这就是我想要做的。我正在为Haskell practice编写一些文本压缩算法,我正在尝试编写Burrows-Wheeler变换,这需要排序。如果您使用Burrows-Wheeler,那么您需要使用固定的字母表,而不一定是ASCII。如果愿意,您可以在原始字节上进行排序。根据注释,Data.Text可能不是我想用于解决特定问题的方法,但如果需要,这看起来确实是对unicode进行排序的最佳方法。根据注释,Data.Text可能不是我想用于解决特定问题的方法,但如果需要,这看起来确实是对unicode进行排序的最佳方法。