Ordenando la matriz por números pares e impares

Utilizando javascriptsort() Método, estoy tratando de ordenar una lista, pero la ordenación tiene en un grupo de números pares y números impares.

El código que probé funciona bien con una lista pequeña, pero si la lista se hace grande no me da un resultado adecuado. Aquí está mi código.

var n = [10,20,21,4,5,6,7,99,0,12,13];
//var n = [10,20,0,12];
n.sort(function(a,b){
 if (a % 2 !=b % 2 ){
   return a%2;
  }else {
    return a - b; 
  }
});

El código anterior me da como resultado aceptado como este Ans -[0, 4, 6, 10, 12, 20, 5, 7, 13, 21, 99] y la segunda respuesta es:[0, 10, 12, 20]

Trabajando bien con estas listas pero si me cambié a esta

var n = [10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13];

Pero en este caso, el resultado es algo como esto que no es correcto.

Dandome una respuesta como esta

[0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 6, 6, 10, 10, 10, 10, 12, 5, 12, 5, 12, 5, 20, 20, 20, 20, 5, 12, 7, 7, 7, 7, 13, 13, 13, 13, 21, 21, 21, 21, 99, 99, 99, 99] Es una mezcla de números pares e impares.

No me está dando un resultado adecuado. Cualquier sugerencia.

Respuestas a la pregunta(3)

Su respuesta a la pregunta