1.题目
2.思路
(1)分别提取奇数下标和偶数下标的元素。
(2)对奇数下标的元素按非递增顺序排序,对偶数下标的元素按非递减顺序排序。
(3)最后将排列好的数字进行合并。
补充:
3.代码实现
class Solution {
public int[] sortEvenOdd(int[] nums) {
List<Integer> odd=new ArrayList<>();
List<Integer> even=new ArrayList<>();
//提取偶数元素的下标 和 奇数元素的下标,分别放入奇数列表和偶数列表里面
for(int i=0;i<=nums.length-1;i++)
{
if(i%2==0)
{
even.add(nums[i]);
}
else
{
odd.add(nums[i]);
}
}
//奇数下标按非递增的排列,偶数下标按非递减的排列
Collections.sort(even);//collection原本就是按递增排列数组
Collections.sort(odd,Collections.reverseOrder());
//将排序后的元素放回到原数组
int evenindex=0;
int oddindex=0;
for(int i=0;i<=nums.length-1;i++)
{
if(i%2==0)//如果是偶数
{ //i=0,1,2.... 这是合并完的数组的下标取值
nums[i]=even.get(evenindex++);
//偶数列表get(0),get(1)
}
else{
nums[i]=odd.get(oddindex++);
//奇数列表get(0),get(1)
}
}
return nums;
}
}