【问题标题】:Merge already sorted LinkedList in java在java中合并已经排序的LinkedList
【发布时间】:2012-04-26 10:46:04
【问题描述】:

我收到一个问题,说合并已经对 2 个linkedList 进行了排序,并将最终输出作为 Sorted LinkedList。 所以我使用了Merge Sort算法的merge方法,得到了输出, 它实际上是正确的方法还是我应该遵循其他方法。

这是一段代码,供大家理解-

private <T extends Comparable<T>> List<T> merge(List<T> left , List<T> right){
    List<T> result = new ArrayList<T>();
    while(left.size()>0 && right.size()>0){
        //Left is less than right
        if(left.get(0).compareTo(right.get(0))<0)
            result.add(left.remove(0)); //add the left if small and remove it from the list             
        else
            result.add(right.remove(0));
    }

    //if left size is greater than 0 , the needed to add left to result
    //it proves that if any of the sizes of left/right is more then those are greater size
    if(left.size()>0)
        result.addAll(left);
    else
        result.addAll(right);


    return result;
}

我的输入 -

 List<String> sorted1 = new LinkedList<String>();
            sorted1.add("Asdsd");
            sorted1.add("ReR");
            sorted1.add("asdasd");
            sorted1.add("ghjhj");
            sorted1.add("zxcxc");
            List<String> sorted2 = new LinkedList<String>();
            sorted2.add("Awdf");
            sorted2.add("Gautom");
            sorted2.add("asa");
            sorted2.add("ggg");
            sorted2.add("qwq");
            sorted2.add("rtrt");

            System.out.println("ORIGINAL SoRTED LIST\n" + 
                    "=================\n" +
                    sorted1 + "and "+sorted2+"\n");
            List<String> sorted_String2 = new MergeSortAbhishek().merge(sorted1,sorted2);
            System.out.println("\nFINAL SORTED LIST\n" +
                    "=================\n" +
                    sorted_String2 + "\n");

【问题讨论】:

  • 你能通过这个吗?可能会有一些帮助。 stackoverflow.com/questions/1774256/…
  • 合并排序算法的合并方法是什么意思?你是自己实现的还是使用了一些现有的?

标签: java sorting data-structures linked-list


【解决方案1】:

对我来说听起来不错。如果没有看到“合并排序中的合并参数”的意思的代码,就不能肯定地说,但这个概念是正确的。

仅供参考,对于代码审查网站来说,这将是一个更合适的问题。

CodeReview Stack Exchange

【讨论】:

    【解决方案2】:

    就我个人而言,我更喜欢使用完全合并 2 个排序列表的特殊方法。 MergeSortAbhishek 中的 merge 方法可能会造成混淆,因为您没有对任何内容进行排序。而且这个方法可能会对排序做一些特殊的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多