题目:给一列数组要求重排,必须所有偶数位上的数都小于所有奇数位上的数。同时,偶数位上的数也按照升序排序,奇数位上的也按照升序排序。
样例:
给出array = [-1,0,1,-1,5,10]
, 返回 [-1,1,-1,5,0,10]
。
package lintcode;
import java.util.Arrays;
public class test951 {
public static void main(String[] args) {
int []arr = new int[]{2,0,1,-1,5,10};
arr = rearrange(arr);
System.out.println(Arrays.toString(arr));
}
/**
* @param nums: the num arrays
* @return: the num arrays after rearranging
*/
public static int[] rearrange(int[] nums) {
// Write your code here
//选择排序
for(int i=0;i<nums.length-1;i++){
for(int j=i+1; j < nums.length;j++){
if(nums[i]>nums[j]){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
int[] arr1 = new int[nums.length/2];
int[] arr2 = new int[nums.length/2];
for(int k=0; k < nums.length;k++){
if(k < nums.length/2 ){
arr1[k] = nums[k];
}else{
arr2[k-nums.length/2] = nums[k];
}
}
int x = 0,y=0;
for(int m=0; m < nums.length; m++){
if(m % 2 == 0){
nums[m] = arr1[x];
x++;
}else{
nums[m] = arr2[y];
y++;
}
}
return nums;
}
}