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

 

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

   void f1( int []array){

        if(array.length<=1)  return ;

        int be=0;
        int end=array.length-1;
        while( be<end){
            while(be<end && (array[be]&1)==1)
                be++;
            while(be<end&&(array[end]&1)==0)
                end--;
            if(be<end)
            {
                int temp=array[be];
                array[be]=array[end];
                array[end]=temp;
            }
        }
    }

 

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

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;
    
    }

 

posted @ 2020-03-29 14:41  浪波激泥  阅读(212)  评论(0编辑  收藏  举报