在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的技术都在左边。请完成sort的代码实现。
方法一:
import java.util.ArrayList;
/**
* 在sort方法中使用两个ArrayList动态数组,如果是奇数则把该数添加到left中,偶数添加到right中,
* 最后把right中的数据全部添加到left中。
* @author 张彬
*
*/
public class TestSort {
public static void main(String[] args) {
int[] a={8,4,1,6,7,4,9,6,4};
sort(a);
}
public static void sort(int[] a){
ArrayList<Integer> left=new ArrayList<>();
ArrayList<Integer> right=new ArrayList<>();
for(int i=0;i<a.length;i++){
if(a[i]%2==1){
left.add(a[i]);
}else{
right.add(a[i]);
}
}
left.addAll(right);
System.out.println(left);
}
}
方法二:
public class TestSort {
public static void main(String[] args) {
int[] a = new int[]{8,4,1,6,7,4,9,6,4};
sort(a);
}
/*
* 从前往后搜索 ,如果前一个数为偶数后一个数为奇数就进行位置调换。
*/
public static void sort(int[] a){
int i=0;
int temp=0;
for (i = 0; i < a.length; i++) {
if (a[i] % 2 != 0 && i != 0) {
for (int j = i; j > 0; j--) {
if (a[j - 1]%2 == 0) {
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
}
for(i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}