[英]How to sort first half of an array in ascending order and second half in descending order
I currently have a Merge Sort algorithm up using Java but I am struggling with modifying it to sort the second half in descending order.我目前有一个使用 Java 的合并排序算法,但我正在努力修改它以按降序对后半部分进行排序。 It should also have a time complexity of O(n).
它还应该具有 O(n) 的时间复杂度。
For example:例如:
Input: 34, 12, 7, 43, 55, 97, 41, 28, 2, 62输入:34、12、7、43、55、97、41、28、2、62
Output: 2, 7, 12, 28, 34, 97, 62, 55, 43, 41 Output:2、7、12、28、34、97、62、55、43、41
In java 1.8+ we can do it like this.在 java 1.8+ 中,我们可以这样做。 we can optimize it further.
我们可以进一步优化它。 :)
:)
public static void main(String[] args) {
Stream<Integer> streamObj = Stream.of(34, 12, 7, 43, 55, 97, 41, 28, 2, 62);
List<Integer> list1 = streamObj.collect(Collectors.toList());
int middleIndex = list1.size()/2;
System.out.println(middleIndex);
List<Integer> firstHalf = list1.subList(0,middleIndex).stream().sorted().collect(Collectors.toList());
List<Integer> secondHalf = list1.subList(middleIndex,list1.size()).stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("firstHalf"+firstHalf+"\nsecondHalf"+secondHalf);
firstHalf.addAll(secondHalf);
System.out.println(firstHalf);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.