Método A: Método doble puntero, dos punteros antes y después de la definición de la matriz, se cumple el número incluso cuando la posición de cambio p1, quicksort similares
1 void f1 ( int [] array) { 2 3 Si (Array.length <= 1) de retorno ; 4 5 Int BE = 0 ; 6 int final = Array.length-1 ; 7 , mientras que (ser < final) { 8 mientras que (ser <extremo && array [BE] y 1 == 1 ) 9 sea ++ ; 10 , mientras que (ser <extremo && array [final] y 1 == 0 ) 11 end-- ; 12 si (ser < final) 13 { 14 int temp = array [ser]; 15 array [ser] = array [final]; 16 array [final] = temp; 17 } 18 } 19 }
función de desacoplamiento puede aumentar en gran medida la capacidad de reutilización de funciones en los mismos tipos de problemas sólo una pequeña parte de los cambios
void f1 ( int [] array) { si (Array.length <= 1) de retorno ; Int ser = 0 ; int final = Array.length-1 ; mientras que (ser < final) { mientras que (ser <extremo && f2 (arrat [ser])!) ser ++ ; mientras que (ser <extremo && f2 (arrat [final)) final - ; si (ser < final) { int temp = array [BE]; array [ser] = array [final]; array [final] = temp; } } } Boolean f2 ( int n) { retorno (n & 1) == 0 ; }