给定一个数列A,试将其变为奇数在左偶数在右的形式。例如A=[12,8,7,5,6,11],则变换后的A'=[11,5,7,8,6,12]
只需要先奇数后偶数即可,不需要排序。 java实现:
package suanfa;
import java.util.Random;
public class partarray {
public int[] createarray(int n){
Random random=new Random();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=random.nextInt(20);
}
return a;
}
public void sort(int[]a){
int i=0;
int j=a.length-1;
while(i<j){
if(a[i]%2==1){
i++;
}
else{
if(a[j]%2==1){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
j--;
}
else{
j--;
}
}
}
}
public void sort2(int[]a){
int i=0;int j=a.length-1;
while(i<j){
int t=a[i]&1;
int b=(t>0)?i++:swap(a,i,j--);
if(i==j)break;
int m=a[j]&1;
int k=(m>0)?swap(a,i++,j):j--;
}
}
public int swap(int []ab,int a,int b){
int temp=ab[b];
ab[b]=ab[a];
ab[a]=temp;
return 0;
}
public static void main(String[] args) {
int[] A={12,8,7,5,6,11};
partarray py=new partarray();
System.out.println("before sorting");
py.print_array(A);
System.out.println("after sorting1");
py.sort2(A);
py.print_array(A);
}
public void print_array(int []a){
for(int i=0;i<a.length;i++){
System.out.println("a["+i+"]"+"is"+a[i]);
}
}
}