1. 辅助数组
/**
* @Classname Solution
* @Description TODO
* @Date 2019/12/17 20:23
* @Created by Cheng
*/
public class Solution {
/**
* 统计奇数个数,然后利用辅助空间重新赋值
* @param array
*/
public void reOrderArray(int[] array) {
int left = 0;
int right = 0;
for (int val : array) {
if ((val & 1) == 1)
right++;
}
int[] temp = array.clone();
for (int val : temp) {
if ((val & 1) == 1)
array[left++] = val;
else
array[right++] = val;
}
}
}
2. 冒泡
/**
* @Classname Solution
* @Description TODO
* @Date 2019/12/17 20:23
* @Created by Cheng
*/
public class Solution {
/**
* 冒泡
* @param array
*/
public void reOrderArray2(int[] array) {
for(int i= 0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]%2==0&&array[j+1]%2==1){
swap(array, j, j + 1);
}
}
}
}
public static void swap(int[] nums,int a,int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
3. 不能保证稳定性的算法
/**
* @Classname Solution
* @Description TODO
* @Date 2019/12/17 20:23
* @Created by Cheng
*/
public class Solution {
/**
* 这个方法并不能保证顺序一致
* @param array
*/
public void reOrderArray3(int[] array) {
int left = 0,right = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 1) {
swap(array,i,left++);
}
}
}
}
本文介绍了三种不同的数组排序算法:使用辅助数组进行奇偶数分离、冒泡排序改进版以及一种不保证稳定性的快速排序方法。这些算法针对数组中奇数和偶数的位置进行了特定优化,提供了不同的时间和空间复杂度权衡。
340

被折叠的 条评论
为什么被折叠?



