Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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/6/EmptyTag/145.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
Javascript 对字符串中的所有字符进行排序_Javascript_Arrays_String_Algorithm_Sorting - Fatal编程技术网

Javascript 对字符串中的所有字符进行排序

Javascript 对字符串中的所有字符进行排序,javascript,arrays,string,algorithm,sorting,Javascript,Arrays,String,Algorithm,Sorting,我试图解决这个问题,我想对字符串中的字符数组进行排序 问题: 对字符数组进行排序(仅限ASCII,而非UTF8)。 输入:由换行符或NULL分隔的字符串,如完整的英语句子。复制品可以 这很容易 输出:按ASCII值排序的字符串。您可以覆盖现有阵列 Taehiissy 解决方案复杂性:以线性时间和恒定附加空间为目标 我知道,在JavaScript中,您可以执行以下操作 const sorted = str.split('').sort().join('') 编辑:我想看看如果我能从中得到什么,我

我试图解决这个问题,我想对字符串中的字符数组进行排序

问题:

对字符数组进行排序(仅限ASCII,而非UTF8)。

输入:由换行符或NULL分隔的字符串,如完整的英语句子。复制品可以

这很容易

输出:按ASCII值排序的字符串。您可以覆盖现有阵列

Taehiissy

解决方案复杂性:以线性时间和恒定附加空间为目标

我知道,在JavaScript中,您可以执行以下操作

const sorted = str.split('').sort().join('')
编辑:我想看看如果我能从中得到什么,我是否能利用
charCodeAt(I)
方法

但这将是O(nLogN)^^非线性(+用于拆分的额外空间O(N))

但在常量空间中,我们如何对字符数组进行排序?

逐字符计算累积计数
const s=“这很容易”;
//创建一个数组,该数组将保存每个字符的计数,从0到255(尽管严格来说ASCII最多只有127个字符)
让计数=数组(256)。填充(0);
//查看输入中的每个字符,并增加该字符在数组中的计数。
for(设i=0;逐字符i表示累积计数

const s=“这很容易”;
//创建一个数组,该数组将保存每个字符的计数,从0到255(尽管严格来说ASCII最多只有127个字符)
让计数=数组(256)。填充(0);
//查看输入中的每个字符,并增加该字符在数组中的计数。

对于(设i=0;如果进行比较,iSorting总是nlogn。但您不需要比较整数。将字符转换为ascii码并对整数进行计数排序。您不需要在此处使用基数排序,因为所有ascii码都是一个接一个的。您自己也尝试过这样做吗?我不确定如何尝试老实说,这是一个问题。我正试图通过
charCodeAt(I)
获取字符的ASCII码,并试图看看我是否能到达某个地方。附言:学习某些东西不需要-1。令人伤心的是,当人们在学习和问问题时,他们会感到沮丧questions@Keatinge:你错了。排序可能比O(n.log2n)快例如,这个问题可以在O(n)时间和O(1)时间内解决空格。@Al Kepp我说的是对的,你误解了。如果你做比较,排序被证明是nlogn的最大值。计数排序和基数排序不做比较。如果你做比较,排序总是nlogn。但是你不需要比较整数。将字符转换成ascii码并计数对整数进行排序。这里不需要使用基数排序,因为所有ascii码都是一个接一个的。你自己也尝试过这样做吗?老实说,我不知道如何尝试解决这个问题。我正在尝试通过
charCodeAt(I)获取字符的ascii码
并试着看看我是否能有所成就。PS:学习东西不需要-1。令人伤心的是,当人们在学习和提问时,他们会感到沮丧questions@Keatinge:您错了。排序可能比O(n.log2n)快,例如,此问题可以在O(n)时间和O(1)内解决空格。@Al Kepp我说的是对的,你误解了。如果你做比较,排序被证明是nlogn的最大值。计数排序和基数排序不做比较。这是计数排序的一个实现这是计数排序的一个实现