如果不考虑奇数和奇数,偶数和偶数之间的相对位置不变。那么只需要两个指针分别指向数组的头和尾,依次比较。
1. 如果头指针指向的数组位置为奇数,那么就判断尾指针指向的数组位置的奇偶性。如果是奇数,则头指针后移一个位置,如果是偶数,则尾指针前移一个位置。
2. 如果头指针指向的数组位置为偶数,那么就判断尾指针指向的数组位置的奇偶性。如果是奇数,则交换头尾指针指向的数组元素,如果是偶数,则尾指针前移一个位置。
代码如下:
public class Q13_ReOrderArray { public static void main(String[] args) { int []array = {1,2,3,4,5,6,7,8,9,10,11,12,13}; reOrderArray(array); for(int i=0;i<array.length;i++) { System.out.print(array[i]+" "); } } public static void reOrderArray(int []array) { int i=0; int j=array.length-1; while(i<j) { if(array[i]%2==1)//奇数 { if(array[j]%2==1)//奇数 { i++; }else//偶数 { j--; } }else//偶数 { if(array[j]%2==1)//奇数 { //交换array[i]和array[j] int temp = array[i]; array[i] = array[j]; array[j] = temp; }else//偶数 { j--; } } } } }
如果要保证奇数和奇数,偶数和偶数之间的相对位置不变。
时间: 2024-10-03 22:53:39