【问题标题】:how to sort substrings separated by blanks in a string如何对字符串中由空格分隔的子字符串进行排序
【发布时间】:2013-07-10 19:54:01
【问题描述】:

如何对由空格分隔的字符串中的元素进行排序。我有以下字符串:

  temp = abcd bcda gfre dfgre fwft efwe

   //temp.size() gives 30
   //after the sort temp should look like ie temp = abcd bcda dfgre efwe fwft gfre

我需要在最短的时间内对 temp 中的元素进行排序。请注意,我正在处理的 temp 的大小约为 10 的 7 次方。我忘了提到我已经尝试过 Collections。 sort 和 Array.sort 花费的时间比要求的要多。我需要的是比这更快的算法吗?

【问题讨论】:

  • 嗯,你试过什么? (这里有两三个任务——拆分、排序和潜在的加入......)
  • 将字符串拆分为单词,对单词数组进行排序。
  • 您对要使用的排序算法有偏好吗?
  • 我强烈推荐使用二进制列表。我们正在处理String,它实现了Comparable。这将是一种对元素进行排序的简单方法。我会推荐的一件事是:public final class BinaryList<E extends Comparable<E>> {
  • 补充我之前的评论:为什么选择二分搜索算法?嗯,它会比Arrays.sort() 使用的优化。既然你有这么多元素,优化是关键。您想使用二进制搜索算法来查找元素所在的索引。

标签: java string sorting


【解决方案1】:
  1. 使用.split(seperator)拆分字符串
  2. 使用集合排序Arrays.sort()

【讨论】:

    【解决方案2】:
    String [] array = temp.split("\\s+"); // split by whitespace
    Arrays.sort(array); // sort using mergesort with insertionsort
    
    StringBuilder sb = new StringBuilder(temp.length());
    
     for(String s : array){
         sb.append(s).append(" "); 
     }
    
    temp = sb.toString(); // assign temp the new string 
    

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2020-03-14
      • 1970-01-01
      • 2021-11-09
      • 2015-08-13
      相关资源
      最近更新 更多