【问题标题】:How to braid two sorted String arrays into one sorted array [duplicate]如何将两个排序的字符串数组编织成一个排序数组[重复]
【发布时间】:2014-05-11 17:28:54
【问题描述】:

我想知道是否有人知道如何将两个阵列快速编织成一个阵列? 假设有两个这样的数组:

String [ ] a1 = {"b","d","i","j","p","w","z"} 

String [ ] a2 = {"a","c","e","f","h","q","r"}. 

这些都是排序的,但我想用braiding 技术将它们合并,这样它就会变成一个长排序数组。

到目前为止,这是我的方法,但它不起作用,tmp 数组最终只有 null [x]。

static void braid(String [] a, String[] b){
    String [] tmp = new String [a.length+b.length];
    for(int i = 0; i < a.length; i++){
        for(int j = 0; j < b.length; j++){
            if(a[i].compareTo(b[j]) < 0) tmp[i] = a[i];
            else if(b[i].compareTo(a[j]) < 0) tmp[i] = b[i];
        }
    }
    for(int i = 0; i < tmp.length;i++){
        System.out.print(tmp[i] + "+");
    }
    System.out.println();
}

【问题讨论】:

标签: java arrays string sorting


【解决方案1】:

我以前没有听说过“编织”这个词——但问题本身的解决方案如下:

使用单个 while 循环进行迭代,为 a1 和 a2 保留一个位置(都从 0 开始)。 while 循环的条件应检查 a1 和 a2 的位置是否分别不大于 a1 和 a2 的大小。在 while 循环中,只增加数组的位置,从中插入 tmp - 即包含较小元素的位置。

【讨论】:

    【解决方案2】:

    我会从 Apache 公共库中导入 ArrayUtils 类。既然已经退出了,为什么还要重新发明轮子。

    String[] a3 = ArrayUtils.addAll(a1, a2);
    Arrays.sort(a3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2021-12-28
      • 2019-12-13
      相关资源
      最近更新 更多