面试题二十一:调整数组顺序使奇数在偶数前面

 

方法一:双指针法,在数组前后定义两个指针,当p1遇见偶数时则调换位置,类似快速排序

 1  void f1( int []array){
 2 
 3             if(array.length<=1)  return ;
 4 
 5             int be=0;
 6             int end=array.length-1;
 7             while( be<end){
 8                 while(be<end&&array[be]&1==1)
 9                         be++;
10                  while(be<end&&array[end]&1==0)
11                         end--;
12                 if(be<end)
13                 {
14                     int temp=array[be];
15                     array[be]=array[end];
16                     array[end]=temp;
17                 }
18             }
19         }

函数的解耦能大大提高函数的重用性,在同类型的问题上只需改动一小部分

void f1( int []array){
        
        if(array.length<=1)  return ;
        
        int be=0;
        int end=array.length-1;
        while( be<end){
            while(be<end&&!f2(arrat[be] ) )
                    be++;
             while(be<end&&f2(arrat[end))
                    end--;
            if(be<end)
            {
                int temp=array[be];
                array[be]=array[end];
                array[end]=temp;
            }          
        }    
    }
    
    boolean f2(int n){
    
    return (n&1)==0;
    
    }

猜你喜欢

转载自www.cnblogs.com/niliuxiaocheng/p/12592237.html