峰与谷系列题
实现的是将数组排序后按
最大、最小、次大、次小…… 的方式交替排列
即所谓的峰谷交替排序
举例说明:
输入:[2, 4, 3, 1, 5]
排序后:[1, 2, 3, 4, 5]
目标输出:[5, 1, 4, 2, 3] (最大、最小、次大、次小、中间数)
✅ 代码如下:
import java.util.Arrays;public class Main {public static void main(String[] args) {int[] nums = new int[]{2, 4, 3, 1, 5};Arrays.sort(nums); // 先排序:升序排列int n = nums.length;int[] result = new int[n];int left = 0, right = n - 1;int index = 0;while (left <= right) {if (left != right) {result[index++] = nums[right--]; // 最大值result[index++] = nums[left++]; // 最小值} else {result[index++] = nums[left++]; // 中间值}}for (int num : result) {System.out.print(num + " ");}}
}
⸻
💡 输出结果:
5 1 4 2 3
这就是 最大、最小、次大、次小… 的峰谷交替排序