面试题二十一:调整数组顺序使奇数在偶数前面
方法一:双指针法,在数组前后定义两个指针,当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; }
浪波激泥