我有一个问题,说合并已经排序的 2 个链接列表并获得最终输出作为排序链接列表。所以我使用了合并排序算法的合并方法并得到了输出,这实际上是正确的方法还是我应该遵循其他方法。
这是一段用于理解的代码——
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 LISTn" +
"=================n" +
sorted1 + "and "+sorted2+"n");
List<String> sorted_String2 = new MergeSortAbhishek().merge(sorted1,sorted2);
System.out.println("nFINAL SORTED LISTn" +
"=================n" +
sorted_String2 + "n");
对我来说
听起来很对。如果不看到"来自合并排序的合并参数"的代码,就不能肯定地说,但这个概念是正确的。
仅供参考,对于代码审查网站来说,这将是一个更合适的问题。
代码审查堆栈交换
就个人而言,我更喜欢使用特殊方法,该方法可以完全合并 2 个排序列表。 MergeSortAbhishek
merge
方法可能会混淆,因为您不对任何内容进行排序。并且此方法可能会执行一些特殊操作以进行排序。