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
Sorting 将字母按巨大的字符串排序_Sorting - Fatal编程技术网

Sorting 将字母按巨大的字符串排序

Sorting 将字母按巨大的字符串排序,sorting,Sorting,我有一个16MB的文本文档,其中包含一个巨大的字母和数字字符串,没有任何分隔符。摘录:“as81jsa8sm1o1kmka9s93m1l” 有没有一种简单的方法可以不用写脚本就把所有字符按字母顺序排列?我担心JS会在文件的重压下崩溃 谢谢。如果您知道字符串只包含字母和数字,则可以使用桶排序并获得良好的性能 我不确定您使用的是哪种语言,因此我假设您可以逐个字符读取字符串。我的解决方案是psuedocode int[] buckets = int[36]; // 26 for letters, 10

我有一个16MB的文本文档,其中包含一个巨大的字母和数字字符串,没有任何分隔符。摘录:“as81jsa8sm1o1kmka9s93m1l”

有没有一种简单的方法可以不用写脚本就把所有字符按字母顺序排列?我担心JS会在文件的重压下崩溃


谢谢。

如果您知道字符串只包含字母和数字,则可以使用桶排序并获得良好的性能

我不确定您使用的是哪种语言,因此我假设您可以逐个字符读取字符串。我的解决方案是psuedocode

int[] buckets = int[36]; // 26 for letters, 10 for numbers; assuming only lowercase characters
while(string.hasNext()) {
  char x = next character in string;
  if(x.isAlpha()) {
    buckets[x-'a']++;
  }else {
    buckets[26 + x - '0']++
  }

}
要打印已排序的字符串,请执行以下操作:

string s = ""; // at the end of the loops, s will contain the sorted string
for(int i =0 ; i < 26; ++i) {
  int y = buckets[i];
  for(int j = 0; j < y; ++j) {
    s+=(y+'a');
  }

}
for(int i =0 ; i < 10; ++i) {
  int y = buckets[i+26];
  for(int j = 0; j < y; ++j) {
    s+=(y+'0');
  }

}
string s=“”;//在循环的末尾,s将包含已排序的字符串
对于(int i=0;i<26;++i){
int y=桶[i];
对于(int j=0;j
您不能在服务器端完成吗?有一种简单快捷的方法可以按字母顺序排列,但是“没有脚本”?这意味着什么?您是否在寻找一种按字母顺序排列字符的编程方法?还是一种不用程序就按字母顺序排列字符的方法?你的语言偏好是javascript吗?我只是在寻找一种最简单的方法来按字母顺序排列我庞大的文档。在终端中,使用javascript,无论结果如何,都是最简单的:)