归并排序
例:将一个数组,按照左边基数右边偶数形式输出
public class 归并_奇左偶右 {
public static void main(String[] args) {
int[] arr=new int[]{1,2,6,8,5,4,7,10,9};
printL(arr);
quker(arr);
printL(arr);
}
public static void quker(int[] arr){
int[] helper;
helper=copy(arr);
int helperL=0;
int begin=0;
int end=arr.length-1;
while (begin<end){
if (helper[helperL]%2!=0){
arr[begin]=helper[helperL];
helperL++;
begin++;
}else {
arr[end]=helper[helperL];
helperL++;
end--;
}
}
}
public static int[] copy(int[] arr){
int[] helper=new int[arr.length];
for (int i=0;i<arr.length;i++){
helper[i]=arr[i];
}
return helper;
}
public static void printL(int[] arr){
for (int i:arr)
System.out.print(i+" ");
System.out.println();
}
}
快速排序
例:将一个数组,按照左边基数右边偶数形式输出
public class 快排_奇左偶右 {
public static void main(String[] args) {
int[] arr=new int[]{1,2,6,8,5,4,7,10,9};
printL(arr);
kuai(arr);
printL(arr);
}
public static void kuai(int[] arr){
int begin=0;
int end=arr.length-1;
int temp;
while(begin<end){
if (arr[end]%2!=0){
if (arr[begin]%2==0){
temp=arr[end];
arr[end]=arr[begin];
arr[begin]=temp;
begin++;
end--;
}else if(arr[begin]%2!=0){
begin++;
}
}else if(arr[end]%2==0) {
end--;
}
}
}
public static void printL(int[] arr){
for (int i:arr){
System.out.print(i+" ");
}
System.out.println();
}
}
最后运行结果都为: